Zend Framework: Controller Plugins vs Action Helpers

痞子三分冷 提交于 2019-11-28 18:17:32

Controller plugins can hook into any controller at any point in the routing process (preDispatch postDispatch, routeStartup, routeShutdown) which makes them apt at providing behind the scenes functionality like ACL enforcement.

Action Helpers are for for reusable but optional segments that your controller might need to access (redirector, flashMessenger).

So if you are creating a reusable snippet of code that always needs to execute itself then use a controller plugin, otherwise you probably want an action helper.

You can think of it this way:

  • Action helpers are used to add methods to controllers.
  • Controller plugins are used to add routing / dispatch logic to controllers.

So ask yourself, do I have a method that I would like to be able to call from all actions in my controller? Or do I need to add logic to the routing / dispatch process.

You might also have a look at the the Built in Action Helpers.

A picture to illustrate the difference between plugins and action helpers: ZF Sequence Flow

Action helpers also have access to the actual controlller object that's being executed. Controller Plugins only have access to the FrontController, and therefore only the controller and action name.

Which you use depends on what context you need. If you need to access a view object attached to a controller, for example, you will want an Action Helper.

Also notice that, in the front controller life-cycle process, the plugins get the control(or invoked) first than the action helpers.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!