代码之家  ›  专栏  ›  技术社区  ›  Laimoncijus

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

  •  26
  • Laimoncijus  · 技术社区  · 14 年前

    有人能给一些提示和/或例子,控制器插件和动作助手是如何不同的吗?是否存在这样的情况:某项任务可以通过一项而不是另一项来完成?对我来说,它们看起来差不多都一样,我常常很难决定何时使用什么…有什么大的不同吗?

    5 回复  |  直到 13 年前
        1
  •  29
  •   Ballsacian1    14 年前

    控制器插件可以在路由过程的任何一点(predispatch postdespatch、routestartup、routeshutdown)连接到任何控制器,这使得它们易于提供诸如acl强制之类的后台功能。

    操作帮助程序用于控制器可能需要访问的可重用但可选的段(重定向程序、FlashMessenger)。

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

        2
  •  14
  •   smack0007    14 年前

    你可以这样想:

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

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

    你也可以看看 Built in Action Helpers .

        3
  •  6
  •   Maxime P    14 年前

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

        4
  •  2
  •   A.J. Brown    14 年前

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

    你用什么取决于你需要什么样的语境。例如,如果需要访问连接到控制器的视图对象,则需要一个操作助手。

        5
  •  0
  •   cuttlefish    14 年前

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