magento 消息机制和错误信息传递
2012-12-06 13:39
369 查看
一个最直接的需求来源是:页面A抛出错误或者提示信息,当转向页面B时能够将其显示。
一般来说有两种方案可以处理此问题:
1. b.php?error_message=xxxxx 或者b.php?err_no=121,对于后者,系统制作一个错误号列表对应的信息,然后对应显示
2. 使用session:将页面A出错或者提示信息放到session某个约定的变量中,然后在目标页面检索并输出。
Magento是采用后者的处理方式。Magento将session分成几组,便于分类管理。如:
Mage::getSingleton('core/session');
Mage::getSingleton('catalog/session');
等等
如要在页面A抛出信息,代码如下:
在目标页面的Block(最好是页面公共部分的Block)的phtml中使用
即可接收显示,然后自动将错误清除。
不过,这里的问题在于$this->getMessagesBlock()->getGroupedHtml()默认只输出core/session抛出的错误信息。如果想输出catalog/session和customer/session抛出的信息,必须在目标网页的controller文件的方法中使用_initLayoutMessages方法,如
注意:$this->_initLayoutMessages('xxx/session');必须在loadLayout方法调用之后才能调用,否则不生效
有的时候我们发现<?php echo $this->getMessagesBlock()->getGroupedHtml() ?> 会不起作用即使使用了$this->_initLayoutMessages(),这时候就考虑多试几个session,如
一般来说有两种方案可以处理此问题:
1. b.php?error_message=xxxxx 或者b.php?err_no=121,对于后者,系统制作一个错误号列表对应的信息,然后对应显示
2. 使用session:将页面A出错或者提示信息放到session某个约定的变量中,然后在目标页面检索并输出。
Magento是采用后者的处理方式。Magento将session分成几组,便于分类管理。如:
Mage::getSingleton('core/session');
Mage::getSingleton('catalog/session');
等等
如要在页面A抛出信息,代码如下:
Mage::getSingleton('catalog/session')->addError($this->__('Please input the valid verify code.'));
在目标页面的Block(最好是页面公共部分的Block)的phtml中使用
<?php echo $this->getMessagesBlock()->getGroupedHtml() ?>
即可接收显示,然后自动将错误清除。
不过,这里的问题在于$this->getMessagesBlock()->getGroupedHtml()默认只输出core/session抛出的错误信息。如果想输出catalog/session和customer/session抛出的信息,必须在目标网页的controller文件的方法中使用_initLayoutMessages方法,如
$this->loadLayout(); $this->_initLayoutMessages('catalog/session'); $this->_initLayoutMessages('customer/session'); $this->renderLayout();
注意:$this->_initLayoutMessages('xxx/session');必须在loadLayout方法调用之后才能调用,否则不生效
有的时候我们发现<?php echo $this->getMessagesBlock()->getGroupedHtml() ?> 会不起作用即使使用了$this->_initLayoutMessages(),这时候就考虑多试几个session,如
Mage::getSingleton(“customer/session”)->addError($this->__('Please input the valid verify code.')); Mage::getSingleton(“core/session”)->addError($this->__('Please input the valid verify code.')); Mage::getSingleton(“checkout/session”)->addError($this->__('Please input the valid verify code.'));
相关文章推荐
- magento 消息机制和错误信息传递
- Struts消息/错误信息传递机制实例
- Windows应用程序信息传递—消息机制
- android消息传递与处理机制总结
- delphi的消息机制实现消息传递字符串
- 消息机制、子窗口和父窗口的消息传递
- 消息传递机制之组件之间消息传递
- 异步消息的传递-回调机制
- 消息传递机制总结
- Erlang并发机制 – 消息传递
- 深度解析VC中的消息传递机制
- html5 消息传递机制 跨域请求
- Handler消息传递机制
- 深度解析VC中的消息传递机制(下)
- Handler消息传递机制
- 异步消息的传递-回调机制
- iOS中消息的传递机制
- vc++ 不同对话框中传递信息的方法(基于自定义消息SendMessage)
- iOS中消息的传递机制
- Handler消息传递机制——Handler类简洁