1

在我的应用程序中,我使用了多个表单,表单提交指向另一个操作,但重定向回上一个操作。在表单提交操作中,我处理表单输入/验证。要返回错误或成功消息,我使用 FlashMessenger。

我的问题是不清楚我是如何为 FlashMessenger 设置名称空间的。在我想使用 FlashMessenger 消息的同一页面上,我有薮形式。

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

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

    } 

我猜我应该用 '$this->flashMessenger('namespace').. 在我的控制器操作中做些什么?但我不知道如何准确地完成这项工作。如果有人有一个例子..那会很棒:)

4

2 回答 2

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();

或者,如果你想指定自己的命名空间,你可以使用类似的东西:

// 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.mvc.plugins.html#flashmessenger-plugin http://framework.zend.com/manual/2.3/en/modules/zend.view .helpers.flash-messenger.html#basic-usage

于 2014-04-11T10:32:12.670 回答
1

flash messenger 控制器插件的命名空间可以使用该setNamespace($namespace)方法手动设置。

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

然而,也有一些方便的函数可以同时设置不同的命名空间和消息

例如,如果要添加成功消息,则可以使用:

$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;
}
于 2014-04-11T10:32:28.700 回答