有人可以提供一些提示和/或示例控制器插件和动作助手有何不同吗?是否存在可以用一个完成特定任务但不能用另一个完成的情况?对我来说,它们看起来或多或少都一样,我经常不得不决定何时使用什么......有什么大的区别吗?
问问题
7865 次
5 回答
29
控制器插件可以在路由过程中的任何点(preDispatch postDispatch、routeStartup、routeShutdown)连接到任何控制器,这使得它们易于提供 ACL 强制等幕后功能。
Action Helpers 用于控制器可能需要访问的可重用但可选的段(重定向器、flashMessenger)。
因此,如果您正在创建一个始终需要自行执行的可重用代码片段,那么请使用控制器插件,否则您可能需要一个动作助手。
于 2010-03-17T18:05:42.050 回答
14
你可以这样想:
- 动作助手用于向控制器添加方法。
- 控制器插件用于向控制器添加路由/调度逻辑。
所以问问自己,我是否有一个方法可以从我的控制器中的所有操作中调用?还是我需要在路由/调度过程中添加逻辑。
您还可以查看内置的 Action Helpers。
于 2010-03-17T19:25:38.810 回答
6
一张图说明插件和动作助手的区别: ZF Sequence Flow
于 2010-07-16T16:48:16.443 回答
2
动作助手还可以访问正在执行的实际控制器对象。控制器插件只能访问 FrontController,因此只能访问控制器和操作名称。
您使用哪个取决于您需要的上下文。例如,如果您需要访问附加到控制器的视图对象,您将需要一个 Action Helper。
于 2010-03-25T17:55:09.380 回答
0
还要注意,在前端控制器生命周期过程中,插件首先获得控制(或调用),而不是动作助手。
于 2010-10-11T20:50:01.140 回答