0

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

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

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

4

1 回答 1

2

最简单的方法可能是在您的操作中禁用默认 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");
于 2013-08-13T16:55:20.037 回答