gpt4 book ai didi

session - zf2 中的 Flash 信使

转载 作者:行者123 更新时间:2023-12-01 06:55:20 26 4
gpt4 key购买 nike

如何在 Zend 框架 2 中使用 Flash Messenger? session 文档还没有。有人知道吗?但是 session 库就在那里。

最佳答案

更新:

Zend Framework 新版本添加了 FlashMessenger View Helper,在路径 /library/Zend/View/Helper/FlashMessenger.php 中找到

FlashMessenger.php

旧答案:

我编写了一个自定义 View 助手,用于打印 flash 消息

在/module/Application/Module.php

public function getViewHelperConfig()
{
return array(
'factories' => array(
'flashMessage' => function($sm) {

$flashmessenger = $sm->getServiceLocator()
->get('ControllerPluginManager')
->get('flashmessenger');

$message = new \My\View\Helper\FlashMessages( ) ;
$message->setFlashMessenger( $flashmessenger );

return $message ;
}
),
);
}

在/library/My/View/Helper/FlashMessages.php 中创建自定义 View 助手
namespace My\View\Helper;
use Zend\View\Helper\AbstractHelper;

class FlashMessages extends AbstractHelper
{

protected $flashMessenger;

public function setFlashMessenger( $flashMessenger )
{
$this->flashMessenger = $flashMessenger ;
}


public function __invoke( )
{

$namespaces = array(
'error' ,'success',
'info','warning'
);

// messages as string
$messageString = '';

foreach ( $namespaces as $ns ) {

$this->flashMessenger->setNamespace( $ns );

$messages = array_merge(
$this->flashMessenger->getMessages(),
$this->flashMessenger->getCurrentMessages()
);


if ( ! $messages ) continue;

$messageString .= "<div class='$ns'>"
. implode( '<br />', $messages )
.'</div>';
}

return $messageString ;
}
}

然后从 layout.phtml 或您的 view.phtml 简单调用
echo $this->flashMessage(); 

让我展示 Controller Action 的例子
public function testFlashAction()
{
//set flash message
$this->flashMessenger()->setNamespace('warning')
->addMessage('Mail sending failed!');

//set flash message
$this->flashMessenger()->setNamespace('success')
->addMessage('Data added successfully');

// redirect to home page
return $this->redirect()->toUrl('/');
}

在主页中,它打印
<div class="success">Data added successfully</div>
<div class="warning">Mail sending failed!</div>

希望这会有所帮助!

关于session - zf2 中的 Flash 信使,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12524817/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com