Zend Framework: плагины контроллеров и помощники действий - PullRequest
26 голосов
/ 17 марта 2010

Может ли кто-нибудь дать несколько советов и / или примеров отличия плагинов контроллера и помощников действий? Существуют ли ситуации, когда конкретное задание может быть выполнено одним, а не другим? Для меня они оба выглядят более или менее одинаково, и у меня часто возникают проблемы, когда приходится решать, когда что использовать ...

Ответы [ 5 ]

29 голосов
/ 17 марта 2010

Плагины контроллеров могут подключаться к любому контроллеру в любой точке процесса маршрутизации (preDispatch postDispatch, routeStartup, routeShutdown), что делает их пригодными для предоставления закулисной функциональности, такой как применение ACL.

Помощники действий предназначены дляповторно используемые, но необязательные сегменты, к которым может понадобиться ваш контроллер (redirector, flashMessenger).

Так что, если вы создаете многократно используемый фрагмент кода, который всегда должен выполняться сам, тогда используйте плагин контроллера, в противном случае вы, вероятно, захотитеПомощник действий.

14 голосов
/ 17 марта 2010

Вы можете думать об этом так:

  • Помощники действий используются для добавления методов в контроллеры.
  • Плагины контроллера используются для добавления логики маршрутизации / диспетчеризации в контроллеры.

Итак, спросите себя, есть ли у меня метод, который я бы хотел вызывать из всех действий в моем контроллере? Или мне нужно добавить логику в процесс маршрутизации / отправки.

Вы также можете взглянуть на Встроенные помощники действий .

6 голосов
/ 16 июля 2010

Изображение, иллюстрирующее разницу между плагинами и помощниками действий: Поток последовательности ZF

2 голосов
/ 25 марта 2010

Помощники действий также имеют доступ к реальному объекту контроллера, который выполняется. Плагины контроллера имеют доступ только к FrontController и, следовательно, только имя контроллера и действия.

То, что вы используете, зависит от того, какой контекст вам нужен. Например, если вам нужен доступ к объекту вида, подключенному к контроллеру, вам понадобится помощник действий.

0 голосов
/ 12 октября 2010

Также обратите внимание, что в процессе жизненного цикла фронт-контроллера плагины получают управление (или вызывают) в первую очередь, чем помощники действий.

...