使用FlashMessenger helper在Zend Framework中对最新消息进行分类(警告,成功,错误)的最简单方法是什么?我还希望使用单一方法来检查控制器可能不需要转发请求的消息。目前,我相信这是通过FlashMessenger :: getCurrentMessage()完成的?在Zend Framework中对FlashMessenger消息进行分类
回答
在你控制器,你可以这样做:
$this->_helper->FlashMessenger(
array('error' => 'There was a problem with your form submission.')
);
$this->_helper->FlashMessenger(
array('notice' => 'Notice you forgot to input smth.')
);
在你查看你可以重复这样的通知:
<?php echo $this->flashMessenger('notice'); ?>
而且这样的错误:
<?php echo $this->flashMessenger('error'); ?>
编辑:
检查this link:
...在这里调用常规getMessages()方法将不起作用。这只会返回在实例化FlashMessenger时存储在相应ZendSession名称空间中的消息。由于添加此请求的任何消息当时都不在ZendSession名称空间中(因为FlashMessenger是为了添加消息而实例化的),所以它们不会由getMessages()返回。
仅就此用例而言,FlashMessenger还提供了一个getCurrentMessages()
方法(以及当前方法的相关系列),该方法返回在当前请求上设置的消息。
两个想法。
1 PHPPlaneta
退房PHPlaneta的源代码,由罗伯特·基本:
https://github.com/robertbasic/phpplaneta
他用标准的FlashMessenger动作助手:
$this->_helper->flashMessenger()->addMessage(array('fm-bad' => 'Error occurred')
然后定义一个视图帮助器称为FlashMessenger,以便他可以访问消息。在他的布局或视图脚本,他只是简单地调用:
<?php echo $this->flashMessenger(); ?>
视图助手使用密钥(例如:'fm-bad'
)建立CSS样式的输出消息。
2. PriorityMessenger
退房肖恩PO MacCath - 莫兰优先使者视图助手:
http://emanaton.com/code/php/zendprioritymessenger
我喜欢这个的事情是,这整个保存邮件的业务在下一页加载显示我应该完全在视图内。因此,在您的操作中,在您的重定向之前,您可以使用消息和优先级填充视图助手。然后,在布局或视图脚本中,通过相同的视图帮助程序将这些消息与它们的优先级一起输出。
好的,感谢大家的意见,但我实施了不同的方法。
我已经有延伸化Zend_Controller_Action其中我已经放在共同逻辑跨应用,所以在执行postDispatch()方法我合并了getCurrentMessages和的getMessages到视图可变父控制器。
public function postDispatch()
{
$messages = array_merge(
$this->_helper->flashMessenger->getCurrentMessages(),
$this->_helper->flashMessenger->getMessages()
);
$this->view->messages = count($messages) > 0 ? $messages[0] : array();
}
我通过控制器动作设置消息,如;
$this->_helper->flashMessenger(array('error'=>'This is an error'));
而在我的布局文件中,我使用$ messages变量的条件;
<?php if(count($this->messages) > 0) : ?>
//.. my HTML e.g. key($this->messages) returns 'error'
// current($this->messages) returns 'This is an error'
<?php endif; ?>
这对我很有用,因为邮件被分类并且可以从当前请求中获得,除了下一次重定向。
- 1. Zend Framework - Flashmessenger - 只有一个字符
- 2. Zend的FlashMessenger
- 3. Zend Framework中的链接错误消息
- 4. 带Zend的FlashMessenger - 如何向其他用户发送消息?
- 5. Zend Framework - POP3 - 检索消息源
- 6. Zend Framework的输入验证消息
- 7. 在Zend Framework中对HTML电子邮件进行渲染操作
- 8. zend框架FlashMessenger问题
- 9. Zend Framework自定义验证类错误消息
- 10. 如何在Zend Framework中的对象Zend_Validate_EmailAddress中编写自定义错误消息
- 11. 如何在JBoss ESB中对消息进行分组?
- 12. 如何在zend framework 2中自定义验证消息?
- 13. Zend Framework:如何取消设置Zend_Db_Table_Rowset对象中的数据行
- 14. PHP(Zend Framework)在Rackspace Cloud站点上进行代码分析
- 15. Zend Framework中的分页
- 16. 消费使用Zend Framework 2
- 17. 通过PHP Zend Framework进行YouTube注释
- 18. 使用Zend Framework进行RAW SQL查询
- 19. 如何向Zend Framework 2中的表单添加错误消息?
- 20. 在lxml中对表格进行分类
- 21. 在MATLAB中对物品进行分类
- 22. 在Zend Framework中找不到的类
- 23. Rabbitmq消息与基于Java API的消息ID进行区分
- 24. 在Zend Framework中生成数据对象
- 25. Zend Framework - 如何对所有控制器进行preDispatch?
- 26. 在Zend Framework中使用zend_auth_adapter进行facebook登录
- 27. ASP。在PHP中使用Zend Framework进行.NET缓存等效
- 28. Zend Framework vs Zend Framework 2
- 29. Text2Vec使用插入符号SVM警告消息进行分类
- 30. 在Zend Framework中获取选定的行
完成此操作的另一种方法可以在这里找到:http://stackoverflow.com/questions/3950637/type-of-flash-messenger-in-zend – Gardner 2013-02-06 13:41:24