Как я могу получить все сегменты ответов в Zend Framework? - PullRequest
1 голос
/ 07 марта 2009

Я использую несколько сегментов ответа, которые добавляю в стек действий следующим образом:

$userlogAction = clone($request);
$userlogAction->setActionName('userlog')->setControllerName('index');
$actionStack->pushStack($userlogAction);

Теперь, когда я проверяю текущее действие в моем представлении:

$request = Zend_Controller_Front::getInstance()->getRequest();
$action = $request->getActionName();

Я получаю название одного (случайного?) Действия, но хочу проверить другое.

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

1 Ответ

2 голосов
/ 08 марта 2009

Запрос, возвращаемый из Zend_Controller_Front::getRequest(), безусловно, не случайный, а запрос, который диспетчер обрабатывает в настоящее время, т.е. запрос, который вызвал метод действия вашего контроллера действий и, таким образом, ваш скрипт вида для выполнения. Используя плагин стека действий, вы просто добавляете больше запросов для обработки диспетчером один за другим.

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

<?php
$front = Zend_Controller_Front::getInstance();
$plugin = $front->getPlugin('Zend_Controller_Plugin_ActionStack');

if ($plugin) {
    $stack = $plugin->getStack();

    foreach ($stack as $request) {
        $action = $request->getActionName();
        // Do whatever you want with $action
    }
} else {
    // Not using the action stack
    $action = $front->getRequest()->getActionName();
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...