Php 布局被渲染两次

Php 布局被渲染两次,php,zend-framework,zend-framework-mvc,zend-controller,Php,Zend Framework,Zend Framework Mvc,Zend Controller,我的布局显示两次似乎有问题。我想知道这是否是由于我的前端控制器插件(见下文)中的某些东西造成的,它只对特定模块使用Zend布局,而不在主应用程序中使用。任何答案都将不胜感激。谢谢 class My_Controller_Plugin_AdoptLayout extends Zend_Controller_Plugin_Abstract { }我在使用_forward或重定向到preDispatch插件中的errorController时遇到了这个问题。你可以检查一下这些东西 我对这句话也有点怀

我的布局显示两次似乎有问题。我想知道这是否是由于我的前端控制器插件(见下文)中的某些东西造成的,它只对特定模块使用Zend布局,而不在主应用程序中使用。任何答案都将不胜感激。谢谢

class My_Controller_Plugin_AdoptLayout extends Zend_Controller_Plugin_Abstract
{


}

我在使用_forward或重定向到preDispatch插件中的errorController时遇到了这个问题。你可以检查一下这些东西

我对这句话也有点怀疑:

$layout->setView($view);

有必要吗。不会自动将视图分配给布局。

根据我的经验,这通常是由ErrorController造成的。我通常清除响应以确保没有嵌套:

public function errorAction() {

        $this->getResponse()->clearBody();

//handle error ........

}

如果您通过Ajax调用调用一个操作,并且您的布局被调用两次,那么您可以设置

$this->_helper->layout->disableLayout();
在行动中


在我的项目中,我也做了一个错误的ajax调用,这使得它在另一个时间进行渲染。希望这有帮助

谢谢andho。我想知道它实际上是否是_forward,但我真的需要使用它,因为我必须在操作之间传递表单值,而且似乎无法让它与$this->_helper->重定向器一起工作。我必须创建一个新的视图对象,因为主应用程序使用Zend_view/Smarty混合,我不想更改所有模板,因为它们是纯Zend_view。为什么需要将表单数据传递给其他操作?是同一控制器中的操作。如果是,您不能调用$this->otherAction();或者使用动作链接,但这可能会渲染另一个视图,除非您关闭其中一个动作的渲染
$this->_helper->layout->disableLayout();