我在zend框架上的项目中注册了2个插件 application.ini中的第一个 这是为了改变布局 resources.frontController.plugins.LayoutSet = “App_Plugins_LayoutSet” 在引导程序中注册的第二个
$fc= Zend_Controller_Front::getInstance();
$fc->registerPlugin(new App_Plugins_AccessCheck($this->_acl));
2插件工作正常,我想知道最初插件执行的是什么, 我们可以为这些插件更改先前的执行吗?
答案 0 :(得分:7)
插件按照注册顺序触发。您可以通过在注册插件时传递“堆栈索引”来覆盖此行为。
OO方式:
$front->registerPlugin(new FooPlugin(), 1); // will trigger early
$front->registerPlugin(new BarPlugin(), 100); // will trigger late
application.ini方式:
resources.frontController.plugins.foo.class = "FooPlugin"
resources.frontController.plugins.foo.stackIndex = 1 // will trigger early
resources.frontController.plugins.bar.class = "BarPlugin"
resources.frontController.plugins.bar.stackIndex = 100 // will trigger late
答案 1 :(得分:1)
上述答案仅部分正确。是的,插件按照它们注册的顺序触发,但它也与插件使用的事件方法有关。例如,preDispatch()将在postDispatch()之前触发,依此类推。
请参阅http://framework.zend.com/manual/en/zend.controller.plugins.html