ZF中的“插件”提供了对页面动作的扩展接口,只需实现Zend_Controller_Plugin_Abstract的相应方法。
文档中说道:
- routeStartup() 在 Zend_Controller_Front 向注册的Router发送请求前被调用。
- routeShutdown() 在Router完成请求的路由后被调用。
- dispatchLoopStartup() 在 Zend_Controller_Front 进入其分发循环(dispatch loop)前被调用。
- preDispatch() 在动作由Dispatcher分发前被调用。该回调方法允许代理或者过滤行为。通过修改请求和重设分发标志位(利用 Zend_Controller_Request_Abstract::setDispatched(false) )当前动作可以跳过或者被替换。
- postDispatch() 在动作由Dispatcher分发后被调用。该回调方法允许代理或者过滤行为。通过修改请求和重设分发标志位(利用 Zend_Controller_Request_Abstract::setDispatched(false) )可以指定新动作进行分发。
- dispatchLoopShutdown() 在 Zend_Controller_Front 推出其分发循环后调用。
代码中可以看到,Zend_Controller_Front在构造函数中初始化了Zend_Controller_Plugin_Broker(维护了 一个Plugin列表_plugins),之后在registerPlugin中把对应的Plugin加入到列表中,触发事件的时候会依次调用 _plugins列表中的Plugin调用响应的方法。
自定义的插件继承自Zend_Controller_Plugin_Abstract,然后使用Zend_Controller_Front的registerPlugin方法注册即可:
class MyPlugin extends Zend_Controller_Plugin_Abstract
{
public function routeStartup(Zend_Controller_Request_Abstract $request)
{
$this->getResponse()->appendBody("<p>routeStartup() called</p>"n");
}
public function routeShutdown(Zend_Controller_Request_Abstract $request)
{
$this->getResponse()->appendBody("<p>routeShutdown() called</p>"n");
}
public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
{
$this->getResponse()->appendBody("<p>dispatchLoopStartup() called</p>"n");
}
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
$this->getResponse()->appendBody("<p>preDispatch() called</p>"n");
}
public function postDispatch(Zend_Controller_Request_Abstract $request)
{
$this->getResponse()->appendBody("<p>postDispatch() called</p>"n");
}
public function dispatchLoopShutdown()
{
$this->getResponse()->appendBody("<p>dispatchLoopShutdown() called</p>"n");
}
}
Zend_Controller_Front::getInstance()->registerPlugin(new MyPlugin());
错误处理(Zend_Controller_Plugin_ErrorHandler)
Zend_Controller_Plugin_ErrorHandler默认的Action为"error",Controller是"Error"。 所以自定义一个继承自Zend_Controller_Action的类ErrorController、实现errorAction方法、创建 error.phtml就可以让Zend_Controller_Plugin_ErrorHandler找到了。
若在Zend_Controller_Front::dispatch()前设置了'noErrorHandler'为true则不加载Zend_Controller_Plugin_ErrorHandler。
若设置了Zend_Controller_Front::throwExceptions(true)则出错时直接throw,不写到_response的$_exceptions列表中。
分享到:
相关推荐
Table of Contents •Introduction to Zend Framework •Overview •Installation •Learning Zend Framework •Zend Framework Quick Start •Autoloading in Zend Framework •Plugins in Zend Framework •...
Whether you are learning Zend framework from scratch or looking to sharpen up your skills from previous versions, Zend Framework 2 Application Development will help you to harness the power of Zend ...
Zend Framework 2 官方教程汉化版
ZendFramework-1.10.4
zend framework中英文手册,包含中文手册,英文手册两个版本。
zend framework zendframework manual 手册,Zend Framework手册 中文版,有一部分还没有汉化
Zend Framework 中文 手册 2008年12月01日.chm MD5: DD29C39D12E9C0B38FD3475A12D05B73 SHA1: 1A6BBBF9311013F2FF2BF97752332160ED767526 CRC32: 88210ABD Zend Framework 入门教程(简体中文1.52版)v0.12.pdf MD5:...
PHP zend framework 教程 很好PHP zend framework 教程 很好PHP zend framework 教程 很好PHP zend framework 教程 很好PHP zend framework 教程 很好PHP zend framework 教程 很好PHP zend framework 教程 很好...
这是基于Zend Framework 框架的CMS PHP 源代码。 安装时请下载Zend及zendx并将其放在library下。
Zend Framework 3 Developer's Guide 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书
zendframework1.9中文版用户手册 直接从网站上下载的离线版本 非常方便 这个是.chm的 还有.exe的版本,方便大家使用。
Zend Framework 3 Developer's Guide 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书
ZendFramework 1.12.9 代码和文档.rar
zend framework zend framework zend framework zend framework zend framework zend framework zend framework
自己编译的里面包含 ZendFramework 1.11.4 中文帮助手册 ZendFramework 1.11.4 api doc ZendFramework 1.11.4 的一个guestbook。 想要就下,不想要就看看.
ZendFramework安装1.11版 ZendFramework安装1.11版
zend framework手册,英文版,学习php最好的框架zend framework必备
ZendFramework1.7.5 ZendFramework1.7.5 ZendFramework1.7.5 ZendFramework1.7.5 ZendFramework1.7.5
zendframework3.0框架代码,方便不想安装composer的童鞋
zend framework 中文手册,详细为你讲解zend framework使用