我不知道这是 ZF2 的错误还是我不太了解它,但我很兴奋为什么会发生这种情况。
我正在使用一种解决方案,通过附加 Dispatch 事件来全局更改每个模块的布局。(例如来自http://framework.zend.com/manual/2.1/en/modules/zend.view.quick-start.html#dealing-with-layouts,最后一个例子)
它运行良好,但问题是,在某些操作中我想setTerminate(true); (对于 Ajax 调用)它不会只显示控制器/动作模板的内容,而是只显示没有内容的布局模板!这是我没有预料到的。
这是如何模拟这一点,在调度函数中设置布局(而不是附加事件,以使其更清晰),然后在控制器的操作中设置终止。
public function dispatch(Request $request, Response $response = null)
{
parent::dispatch($request, $response);
$this->layout('layout/new');
}
public function indexAction()
{
$model = new ViewModel();
$model->setTerminal(true);
return $model;
}
同样,我希望这将只显示控制器/索引模板的内容,但不是那样,它只显示布局/新的内容而没有内容。
我试图设置布局,它按我的预期工作。
public function indexAction()
{
$this->layout('layout/new');
$model = new ViewModel();
$model->setTerminal(true);
return $model;
}
这是有效的,它只显示控制器/索引模板的内容而不是布局。
因此,如果我正在为每个控制器更改全局布局(通过附加调度事件),它会一直工作,直到我想使用这些控制器之一进行 Ajax 调用并使用 setTerminate。
感谢您的帮助。