Zend框架:控制器插件与动作助手

Lai*_*jus 26 zend-framework zend-framework-mvc

有人可能会提供一些技巧和/或示例控制器插件和动作助手是如何不同的?是否存在可以用一个而不是另一个完成特定任务的情况?对我来说,他们看起来或多或少都是一样的,我经常无法决定何时使用什么......有什么大不同之处吗?

Bal*_*an1 29

控制器插件可以在路由进程中的任何一点挂钩到任何控制器(preDispatch postDispatch,routeStartup,routeShutdown),这使得它们能够提供像ACL强制执行这样的幕后功能.

Action Helpers用于控制器可能需要访问的可重用但可选的段(重定向器,flashMessenger).

因此,如果您要创建一个可重用的代码片段,它总是需要自己执行,那么请使用控制器插件,否则您可能需要一个动作帮助器.

  • 请注意,动作控制器也可以自己执行,因为它们具有preDispatch()和postDispatch()挂钩.ActionHelperBroker用于控制它. (8认同)

sma*_*007 14

你可以这样想:

  • 动作助手用于向控制器添加方法.
  • 控制器插件用于向控制器添加路由/调度逻辑.

那么问问自己,我是否有一种方法可以通过控制器中的所有操作调用?或者我是否需要在路由/调度过程中添加逻辑.

您也可以查看内置动作助手.


Max*_*e P 6

用于说明插件和动作助手之间区别的图片: ZF Sequence Flow