Подтвердить что ты не робот

Zend Framework: плагины контроллеров и помощники действий

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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

Ответ 4

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

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

Ответ 5

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