西部数码主机 | 阿里云主机| 虚拟主机 | 服务器 | 返回乐道官网
当前位置: 主页 > php教程 > magento教程 >

Magento的Session数据信息传递及输出

时间:2016-10-20 14:10来源:未知 作者:好模板 点击:
一个最直接的magento需求来源是:页面A抛出错误或者提示信息,当转向页面B时能够将其显示。 一般来说有两种方案可以处理此问题: 1. b.php?error_message=xxxxx 或者b.php?err_no=121,对于后者,
一个最直接的magento需求来源是:页面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抛出信息,代码如下:
 
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方法调用之后才能调用,否则不生效。
(责任编辑:好模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------