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

Php 如何在Zend Framework中获取所有响应段?,php,zend-framework,Php,Zend Framework,我使用了几个响应段,我将它们推到我的动作堆栈上,如下所示: $userlogAction = clone($request); $userlogAction->setActionName('userlog')->setControllerName('index'); $actionStack->pushStack($userlogAction); 现在,当我在视图中测试当前操作时: $request = Zend_Controller_Front::getInstance()

我使用了几个响应段,我将它们推到我的动作堆栈上,如下所示:

$userlogAction = clone($request);
$userlogAction->setActionName('userlog')->setControllerName('index');
$actionStack->pushStack($userlogAction);
现在,当我在视图中测试当前操作时:

$request = Zend_Controller_Front::getInstance()->getRequest();
$action = $request->getActionName();
我得到一个(随机?)动作的名称,但我想测试另一个动作


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

从Zend\u Controller\u Front::getRequest()返回的请求肯定不是随机的,而是调度程序当前正在处理的请求,即,导致调用动作控制器的动作方法,从而执行视图脚本的请求。使用ActionStack插件,您只需添加更多请求,由dispatcher逐个处理

如果要获取操作堆栈上的所有请求,必须直接查询操作堆栈插件:

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


“停止编辑我的博文RICH B!”他是个疯子。他的行为非常无礼和粗鲁!现在太多了…Rich的编辑是有效的。如果你有不符合逻辑的理由,就把它们贴出来。否则,别把它当回事,他每天编辑数百篇文章。@tharkun:再一次,这是一个完全有效的编辑,只会让你受益。请停止这种胡说八道。