如何在Zend Framework中获取所有响应段?

时间:2009-03-07 18:04:55

标签: php zend-framework

我正在使用几个响应段,我按照这样推动我的动作堆栈:

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

现在,当我在视图中测试当前操作时:

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

我得到一个(随机?)动作的名称,但我想测试另一个。

我如何测试某个操作是否在堆栈上的操作中,而不是仅仅在堆栈中获取最后一个操作?

1 个答案:

答案 0 :(得分:2)

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();
}
?>