我在ZF2中使用Flash Messenger遇到了一个很奇怪的问题。我在一个非常简单的场景中使用它,在注册后保存“注册完成”消息并重定向到登录页面并显示该消息,但是该消息从未由Flash Messenger发送。

在 Controller 注册操作中:

$this->flashMessenger()->addMessage('Registration complete');
return $this->redirect()->toRoute('default', array('controller' => 'user', 'action' => 'login'));

在 Controller 登录操作中:
$flashMessenger = $this->flashMessenger();
$mes = $flashMessenger->hasMessages();
$cur = $flashMessenger->hasCurrentMessages();

$ mes和$ cur都是错误的(我只是想确保都尝试过)。任何人都可以阐明这一点吗?

我正在使用ZF 2.2.2和PHP 5.3.14。 session 保存处理程序正在使用dbtable适配器,我尝试禁用此功能,并将flashmessenger session 管理器设置为使用相同的dbtable保存处理程序,但没有结果。

最佳答案

要使用FlashMessenger Controller 插件,您需要在 Controller 中添加以下内容:

<?php
class IndexController extends AbstractActionController {

  public function indexAction() {

    $this->flashMessenger()->addMessage('Your message');

    return $this->redirect()->toRoute('admin/default', array('controller'=>'index', 'action'=>'thankyou'));
  }

  public function thankyouAction() {

    return new ViewModel();
  }

}

将以下内容添加到thankyou.phtml View 模板中:
<?php

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

    echo '<div class="alert alert-info">';

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

    echo '</div>';
}

?>

关于php - Zend Framework 2 Flash Messenger不返回任何消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21549913/

10-12 16:44
查看更多