调用(父)抽象控制器Zend的视图脚本


Call view script of (parent) Abstract controller Zend

我有一个父(抽象)控制器,我有两个子控制器扩展抽象控制器。我有一个在两个子控制器中都通用的动作,因此我在抽象控制器中实现了这个动作。

问题是,当我从其中一个子控制器(例如/module/child1/commonaction)调用此操作时,该操作调用会传递到基本控制器,在执行功能后,它会查找视图脚本。我在与基本控制器相同的文件夹名称下有一个通用视图脚本,但底层Zend机制在以子控制器命名的目录中查找视图脚本(在本例中,它查找child1/commonaction.phtml),尽管我在basecontroller/commonaction.phtml中有视图脚本。

如何在基本控制器目录下呈现视图脚本?

最简单的方法可能是在您的操作中禁用默认的viewRenderer并自己渲染文件。

// coerce a view from the view renderer.
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
$viewRenderer->initView("/path/to/base/controller");
$this->view = $viewRenderer->view;
// disable automatic rendering
$viewRenderer->setNoRender(true);
// do all your action stuff here
$this->getResponse()->appendBody($this->view->render("viewscript.phtml");