Проблема в цикле отправки Zend - PullRequest
0 голосов
/ 24 февраля 2011

Я использую Zend Framework для создания веб-сайта, и у меня возникают некоторые проблемы с циклом отправки.

Обычно URL-адреса Zend Framework создаются следующим образом: http://www.domain.com/module/controller/action.

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

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

Но на этом этапе представление уже было отображено, и файлы cookie, которые былизначение, установленное при возникновении dispatchLoopShutdown, не изменит выходных данных соответствующим образом.

Итак, мой вопрос ... есть ли способ заставить представление быть снова визуализированным?Или способ узнать, какой модуль, контроллер и действие будут выполнены, перед dispatchLoopShutdown?Я также пытался сделать это на postDispatch, но результаты те же!

Надеюсь, я смог правильно объяснить мою проблему.

Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 05 апреля 2015

У меня была такая же проблема. Это было решено Zend_Controller_Plugin_ActionStack. Я добавил некоторые действия, где реализована логика из dispatchLoopShutdown. Эта ссылка может быть полезна http://framework.zend.com/manual/1.12/en/zend.controller.plugins.html#zend.controller.plugins.standard.actionstack

0 голосов
/ 26 февраля 2011

Вот хорошая схема последовательности Zend Framework.

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

<?php
class Custom_Controller_Plugin_CheckRoute extends Zend_Controller_Plugin_Abstract
{
    public function preDispatch($request)
    {
        //Get Request
        $controller = $request->controller;
        $action     = $request->action;
        $module     = $request->module; 

        //=> perform actions before dispatch

        //Update the Request
        $request->setModuleName('default')
            ->setControllerName('index')
            ->setActionName('action2');
    }
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...