2014-04-11 1 views
1

내 응용 프로그램에서 여러 양식을 사용 중입니다. 양식 제출이 다른 작업을 가리키고 있지만 이전 작업으로 다시 리디렉션됩니다. 양식 제출 작업에서 양식 입력/유효성 확인 을 처리합니다. 오류 또는 성공 메시지를 반환하려면 FlashMessenger를 사용합니다.flashmessenger의 ZF2 네임 스페이스

저의 문제점은 FlashMessenger에 대한 네임 스페이스를 설정하는 방법이 명확하지 않다는 것입니다. 저는 FlashMessenger 메신저를 사용하고자하는 동일한 페이지에 serval 폼을 가지고 있습니다.

if ($this->flashMessenger()->hasMessages()) { 

     $messages = $this->flashMessenger()->getMessages(); 
     foreach($messages as $message) { 
     echo $message; 
     } 

    } 

'$ this-> flashMessenger ('네임 스페이스 ')로 뭔가를해야한다고 생각합니다. 내 컨트롤러 동작에서? 그러나 나는이 작품을 정확히 만드는 방법을 알지 못했습니다. 사람이 예를 가지고 있다면 .. 그 것이다 당신은 당신의 액션 컨트롤러이 내장 된 방법을 사용하여 특정 네임 스페이스에 메시지를 추가 할 수 있습니다 :

답변

1

플래시 메신저 컨트롤러 플러그인의 네임 스페이스는 setNamespace($namespace) 방법을 사용하여 수동으로 설정할 수 있습니다.

$this->flashMessenger()->setNamespace('foo')->addMessage($message); 

그러나 convenience functions that will set a different namespace and message at the same time도 있습니다. 수 있도록 네임 스페이스를 다시

$this->flashMessenger()->addSuccessMessage($message); 

가 내부적으로 플러그인이 success으로 네임 스페이스를 설정하고 다음에 메시지를 추가 (과 :

당신은 성공 메시지를 추가 할 경우, 예를 들어, 당신은 사용할 수 있습니다 다음 메시지를 설정하려면 (기본값은 default)

public function addSuccessMessage($message) 
{ 
    $namespace = $this->getNamespace(); 
    $this->setNamespace(self::NAMESPACE_SUCCESS); 
    $this->addMessage($message); 
    $this->setNamespace($namespace); 

    return $this; 
} 
+0

위대한 설명, 알렉스. –

2

큰 :

// in your controller 
$this->flashMessenger()->addInfoMessage('info message'); 
$this->flashMessenger()->addSuccessMessage('success message'); 
$this->flashMessenger()->addErrorMessage('error message'); 

// in your view script 
$this->flashMessenger()->getInfoMessages(); 
$this->flashMessenger()->getSuccessMessages(); 
$this->flashMessenger()->getErrorMessages(); 

또는 당신이 원하는 경우를 자신의 네임 스페이스를 지정, 당신은 같은 것을 사용할 수 있습니다

http://framework.zend.com/manual/2.3/en/modules/zend.mvc.plugins.html#flashmessenger-plugin자세한 내용

// in your action controller 
$defaultNamespace = $this->getNamespace(); 
$this->setNamespace('yournamespace'); 
$this->addMessage($message); 
$this->setNamespace($defaultNamespace); 

// in your view script 
$this->flashMessenger()->getMessagesFromNamespace('yournamespace'); 

을, 당신은 문서를 볼 수 있습니다http://framework.zend.com/manual/2.3/en/modules/zend.view.helpers.flash-messenger.html#basic-usage

+0

+1 댐! – AlexP

관련 문제