什么插件首先在zend框架上执行?

时间:2010-03-30 19:03:25

标签: zend-framework

我在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插件工作正常,我想知道最初插件执行的是什么, 我们可以为这些插件更改先前的执行吗?

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

Source: Zend Controller Plugins in ZF

答案 1 :(得分:1)

上述答案仅部分正确。是的,插件按照它们注册的顺序触发,但它也与插件使用的事件方法有关。例如,preDispatch()将在postDispatch()之前触发,依此类推。

请参阅http://framework.zend.com/manual/en/zend.controller.plugins.html