Zend отменяет действие помощника из действия контроллера

#php #zend-framework #controller #helpers

#php #zend-framework #контроллер #помощник

Вопрос:

Обсуждение Zend framework.Я инициализирую в своем классе начальной загрузки My_Action_Helper_Custom (расширяя Zend_Controller_Action_Helper_Abstract), чтобы сделать его доступным для всех моих контроллеров.

Могу ли я просто отключить его для определенного действия, когда оно мне не нужно?

Спасибо

Luca

Ответ №1:

Вы имеете в виду отключение перехватов preDispatch() или postDispatch() для определенного действия контроллера?

Если это так, я бы добавил некоторую форму свойства blacklist к помощнику, например

 /**
 * @var array
 */
private $blacklistActions = array();

public function addBlacklistAction($action)
{
    // store actions in string form
    // eg, module.controller.action
    $this->blacklistActions[] = $action;
}

public function preDispatch()
{
    $request = $this->getRequest();
    $action = sprintf('%s.%s.%s',
            $request->getModuleName(),
            $request->getControllerName(),
            $request->getActionName());
    if (in_array($action, $this->blacklistActions)) {
        return;
    }

    // the rest
}
  

Комментарии:

1. должен ли я вызывать addblacklistAction из контроллера??

2. @luca Я бы сделал это из начальной загрузки, прежде чем добавлять его в вспомогательный брокер