разъяснение setDispatched () - PullRequest
       2

разъяснение setDispatched ()

0 голосов
/ 11 марта 2012

Вопрос касается метода setDispatched () маршрутизатора Zend Framework ...

У меня есть fooAction() и loginAction() в одном контроллере (indexController).

* 1006У меня также есть ActionHelper, и я использую его preDispatch().В конце этой функции у меня есть оператор if, где я проверяю ACL:
public function preDispatch() {

    // some code...

    if (!$this->_acl->isAllowed($role, $resource, $privilege)) {
        $request->setModuleName('default');
        $request->setControllerName('index');
        $request->setActionName('login');

        $request->setDispatched(false); //what does this mean exactly??
    }
}

Поэтому, когда я хочу достичь fooAction(), а пользователь не имеет разрешения, я устанавливаюимя действия для входа в систему ...

Теперь мой вопрос: что означает $request->setDispatched(false); точно?

Указывает ли это на то, что ZF может начать отправку действия loginAction?() , поскольку он еще не отправлен (setDispatched ( false );)?

1 Ответ

2 голосов
/ 11 марта 2012

С Справочное руководство Zend Framework :

В начале каждой итерации он устанавливает флаг в объекте запроса, указывающий, что действие было отправлено.Если плагин action или pre или postDispatch сбрасывает этот флаг, цикл отправки продолжится и попытается отправить новый запрос.Изменяя контроллер и / или действие в запросе и сбрасывая флаг отправки, разработчик может определить цепочку запросов для выполнения.

Вызывая setDispatched(false), вы в основном говорите, что запросеще не был отправлен на контроллер, и Диспетчер попытается повторно отправить его.Это необходимо, поскольку вы изменяете модуль, контроллер и действие запроса и хотите, чтобы диспетчер снова обработал его и отправил в нужное место.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...