Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在ZF视图脚本中使用FlashMessenger和PartialLop_Php_Zend Framework - Fatal编程技术网

Php 在ZF视图脚本中使用FlashMessenger和PartialLop

Php 在ZF视图脚本中使用FlashMessenger和PartialLop,php,zend-framework,Php,Zend Framework,我有两个问题与FlashMessenger视图助手有关。这两个问题都是为了执行此代码: 我的行动方法: private $_messages; // set to $this->_helper->FlashMessenger; in init() public function loginAction() { // > login validation < // Switch based on the result code switch ($

我有两个问题与FlashMessenger视图助手有关。这两个问题都是为了执行此代码:

我的行动方法:

private $_messages; // set to $this->_helper->FlashMessenger; in init()

public function loginAction() {
    // > login validation <

    // Switch based on the result code
    switch ($result->getCode()) {
        // > snip several cases <

        case Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID:
            $this->_messages->addMessage("That wasn't the right password."); 
        break;

        case Zend_Auth_Result::SUCCESS:
            $this->_messages->addMessage('Logged you in successfully. Welcome back!');
            $this->_helper->Redirector('index', 'home');
        break;
    }

    // >snip<

    $this->view->messages = $this->_messages->getMessages();
    $this->render();
}
但这对
partiallop
没有好处,因为我需要获取消息(需要每个消息都是一个数组,包含
'message'=>'messagestring'
键/值对)

是否有更好的方法,而不是在提交到视图之前重写数组?

我将引用

10.8.4.4.1。导言

FlashMessenger帮助程序允许您 传递用户可能需要的消息 需要在下一个请求中查看。到 FlashMessenger使用 要存储的Zend_会话_命名空间 未来或下一个请求的消息 检索

基本上,这意味着您必须刷新页面才能看到消息

为PartialLop编辑:

你可以试试这个:

foreach ($array as $message) {
  $newArray[]['message'] = $message;
}
但是你不必使用PartialLoop。您可以将其发送到Partial并在那里循环。甚至在您的视图中循环它。

我想补充的是,您可以在添加到FlashMessenger的相同请求中检索flash消息。在这种情况下,您必须使用
Zend\u Controller\u Action\u Helper\u FlashMessenger::getCurrentMessages()

如果是你的话,你就得换线了

$this->view->messages = $this->_messages->getMessages();

希望有帮助

foreach ($array as $message) {
  $newArray[]['message'] = $message;
}
$this->view->messages = $this->_messages->getMessages();
$this->view->messages = $this->_messages->getCurrentMessages();