我正在使用几个响应段,我按照这样推动我的动作堆栈:
$userlogAction = clone($request);
$userlogAction->setActionName('userlog')->setControllerName('index');
$actionStack->pushStack($userlogAction);
现在,当我在视图中测试当前操作时:
$request = Zend_Controller_Front::getInstance()->getRequest();
$action = $request->getActionName();
我得到一个(随机?)动作的名称,但我想测试另一个。
我如何测试某个操作是否在堆栈上的操作中,而不是仅仅在堆栈中获取最后一个操作?
答案 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();
}
?>