在此期间,我想通了,如何解决这一点,因为我觉得别人也会遇到同样的问题,在未来,我会在这里回答我的问题:
在我ActionSetup.php(或bootstrap.php中如果动作设置没有分开),我需要确保只有在请求不是XmlHttpRequest的情况下才会将动作推送到动作堆栈。
这是唯一缺少的是一个if语句:
if (!$request->isXmlHttpRequest())
整个事情看起来像这样:
/**
* Front Controller plugin to set up the action stack.
*
*/
class Project_Controller_Plugin_ActionSetup extends Zend_Controller_Plugin_Abstract
{
public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
{
if (!$request->isXmlHttpRequest())
{
$front = Zend_Controller_Front::getInstance();
if (!$front->hasPlugin('Zend_Controller_Plugin_ActionStack'))
{
$actionStack = new Zend_Controller_Plugin_ActionStack();
$front->registerPlugin($actionStack, 97);
} else
{
$actionStack = $front->getPlugin('Zend_Controller_Plugin_ActionStack');
}
$menuAction = clone ($request);
$menuAction->setActionName('menu')
->setControllerName('index');
$actionStack->pushStack($menuAction);
$userlogAction = clone ($request);
$userlogAction->setActionName('userlog')
->setControllerName('index');
$actionStack->pushStack($userlogAction);
//etc.
}
}
}