2009-09-27 2 views
2

Zend 프레임 워크에 익숙하지 않아 문제가 있습니다. 내가 좋아하는 기능을 구현하는 컨트롤러 추상 클래스 생성 : 나는 $ this-> AddError ($ 오류)를 사용할 수 있어요 각각의 컨트롤러에 대한 그래서Zend FlashMessenger 문제

protected function AddError($message) { 
    $flashMessenger = $this->_helper->FlashMessenger; 
    $flashMessenger->setNamespace('Errors'); 
    $flashMessenger->addMessage($message); 
    $this->view->Errors = $flashMessenger->getMessages(); 
} 

protected function activateErrors() 
{ 
    $flashMessenger = $this->_helper->FlashMessenger; 
    $flashMessenger->setNamespace('Errors'); 
    $this->view->Errors = $flashMessenger->getMessages(); 
} 

을; 그리고 나서 레이아웃에 $ error를 렌더링합니다. 그래서 모든 컨트롤러에서 flashMesenger를 다루지 않기를 바랍니다.

하지만 각 동작이 실행될 때 activateErrors를 실행해야합니다. 예를

에 대한

내가

클래스 TestController가 MyController에를 확장하는 컨트롤러 검사를 {

public function indexAction() { 

    $this->AddError("Error 1"); 
    $this->AddError("Error 2"); 
    $this->activateErrors(); 
} 


public function index1Action() { 

    $this->AddError("Esdsd 1"); 
    $this->AddError("sddsd 2"); 
    $this->activateErrors(); 
} 

}

내가 각 행동이 activateErrors를 실행할 수있는 방법이 있나요 모든 컨트롤러는 코드를 복제하지 않고 작업이 끝날 때마다 작동합니다.

나는 모든 행동에이 코드를 포함하고 싶지 않다는 것을 의미합니다. 어쩌면 내 추상 클래스 MyController에 포함시키는 방법이있을 것입니다.

아무도 아이디어가 없습니까?

감사

답변

1

어떤 부모 MyController에서는, postDispatch hook 사용에 대한?

해당 페이지를 인용 :

Zend_Controller_Action 는 요청 된 액션과 preDispatch() postDispatch() 책꽂이라고 불리는 두 개의 방법을 지정한다.
이들은 에 다양한 방법으로 도움이 될 수 있습니다 확인 인증 및 ACL의 사전 작업 를 실행 에 예를 들어, 또는 배치가 콘텐츠를 생성, (작업이 건너 뜁니다 preDispatch()에서 _forward()를 호출) 서식 파일 (postDispatch()).

아마도이 트릭을 수행 할 수 있을까요?