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

时间:2010-03-17 15:09:54

标签: zend-framework zend-framework-mvc

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

5 个答案:

答案 0 :(得分:29)

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

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

因此,如果您要创建一个可重复使用的代码片段,始终需要自己执行,那么请使用控制器插件,否则您可能需要一个动作助手。

答案 1 :(得分:14)

你可以这样想:

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

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

您可能还需要查看Built in Action Helpers

答案 2 :(得分:6)

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

答案 3 :(得分:2)

动作助手还可以访问正在执行的实际控制器对象。控制器插件只能访问FrontController,因此只能访问控制器和操作名称。

您使用哪种方法取决于您需要的上下文。例如,如果需要访问连接到控制器的视图对象,则需要一个Action Helper。

答案 4 :(得分:0)

另请注意,在前端控制器生命周期过程中,插件首先获得控件(或调用),而不是操作助手。