Toggle Navigation
首页
Golang
PHP
Laravel
Magento
Linux
数据库
MySQL
Redis
Mongodb
热门知识
程序与生活
架构师之路
静态站点
GitHub
主页
Magento消息机制和错误信息传递
Magento消息机制和错误信息传递
10-26
Mark
823
我们经常会碰到一个最直接的需求是:页面A抛出错误或者提示信息,当转向页面B时能够将其显示。 一般来说有两种方案可以处理此问题: 1. b.php?error_message=xxxxx 或者b.php?err_no=121,对于后者,系统制作一个错误号列表对应的信息,然后对应显示 2. 使用session:将页面A出错或者提示信息放到session某个约定的变量中,然后在目标页面检索并输出。 Magento是采用后者的处理方式。Magento将session分成几组,便于分类管理。如: ```php Mage::getSingleton('core/session'); Mage::getSingleton('catalog/session'); ``` 如要在页面A抛出信息,代码如下: ```php Mage::getSingleton('catalog/session')->addError($this->__('Please input valid verify code.')); ``` 在目标页面的Block(最好是页面公共部分的Block)的phtml中使用 ```php <?php echo $this->getMessagesBlock()->getGroupedHtml(); ?> ``` 即可接收显示,然后自动将错误清除。 不过,这里的问题在于$this->getMessagesBlock()->getGroupedHtml()默认只输出core/session抛出的错误信息。如果想输出catalog/session和customer/session抛出的信息,必须在目标网页的controller文件的方法中使用_initLayoutMessages方法,如: ```php $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,如: ```php Mage::getSingleton('customer/session')->addError($this->__('Please input valid verify code.')); Mage::getSingleton('core/session')->addError($this->__('Please input valid verify code.')); Mage::getSingleton('checkout/session')->addError($this->__('Please input valid verify code.')); ```
最新文章
Golang内存问题处理
WebSocket详解
Gopher面试中的Coding(三)
Golang用os/signal包实现平滑重载配置文件
Nginx实现负载均衡的几种方式
Golang中子goroutine与主协程同步的四种实现
Dockerfile文件详解
Golang开发微信公众号
最热文章
Magento实现下载csv数据表格
1806
Laravel带有条件搜索的分页
1708
Magento上传文件、缩略图和导出CSV
1699
Magento添加Advanced Dataflow
1651
Golang开发微信公众号
1583
Magento后台添加rule规则
1552
Magento优化 – MySQL读写分离
1517
Magento常用模块分享
1414
热门标签
下载
laravel分页
上传
导出
Dataflow
微信公众号
rule
规则
读写分离
模块
shell
正则
Collection
binlog
命名空间
内存泄漏
处理
Git
string
解锁
锁表
composer
事务处理
函数
redis sentinel
架构
系统
time
package
读写
事务处理
缓存
日志分析
进阶
golang
表分割
schedule
fmt
事务
分布式锁
交叉编译
HTTPS
日志分割
Gopher面试
Dockerfile
mongodb
channel
多数据库
git服务器
gogs
重载配置
负载均衡
日志过滤
php
protobuf
发展方向
版本号
模型关系
concat
goroutine
json
mongodb
get
post
defer
panic
golang算法
docker
elasticsearch
算法
rpc
代码部署
redis
写文件
主从配置
protobuf
websocket
laravel
package
并发
量级
curl
生成插件
直接下载
数据类型
错误传递
Shell
grpc
成长
Go指针
参数
方法
队列
protobuf
Redis持久化
路上
风景
yum