Zend重用视图

| 对于我创建的每个新控制器和操作,Zend都希望模板文件位于“ 0”中。但是,我希望多个操作共享一个模板,可以将数据库中的文本注入到该模板中。 我目前使用布局,并使用
echo $this->layout()->content
委派页面特定的视图。我尝试了以下方法:
class SomeController extends Zend_Controller_Action{

    public function someAction() {
        $path = $this->view->getScriptPath();
        $this->view = new Zend_View();
        $this->view->setScriptPath($path);
        $this->view->render(\'default.phtml\');
    }
}
但是,我得到一个错误,即在路径中找不到脚本\'some / some.phtml \'。如何正确执行此操作?     
已邀请:
        您必须使用\'default \'(不带扩展名)并直接调用该方法(不在视图上),例如
$this->render(\'default\');
参见Zend_Controller_Action :: render   render(string | null $ action = null,string | null $ name = null,bool $ noController = false):无效      渲染视图      渲染视图。默认情况下,视图在视图脚本路径中以/.phtml找到。您可以通过重置{@link $ viewSuffix}来更改脚本后缀。您可以通过为$ noController指定boolean true来省略控制器目录前缀。      默认情况下,渲染的内容会附加到响应中。您可以通过指定$ name来指定要设置的命名主体内容段。 如果要提供特定的脚本,请使用
$this->renderScript(\'controller/action.phtml\');
参见Zend_Controller_Action :: renderScript   renderScript(字符串$ script,字符串$ name = null):void      渲染给定的视图脚本      与{@link render()}类似,此方法呈现视图脚本。但是,与render()不同,它不会通过{@link getViewScript()}自动确定视图脚本,而是呈现传递给它的脚本。如果您知道要使用的确切视图脚本名称和路径,或者使用的路径不符合使用getViewScript()定义的规范,请使用此名称。      默认情况下,渲染的内容会附加到响应中。您可以通过指定$ name来指定要设置的命名主体内容段。     
        如果您选择使用viewRenderer并且需要从另一个控制器中选择一个视图,则必须将$ noController参数设置为TRUE: BookController:
public function saveBookAction()
{ 
    ...
    $this->_helper->viewRenderer(\'/approval/index\', null, $noController = true);
}
这将查找/views/scripts/approval/index.phtml视图,而不是默认的/views/scripts/book/save-book.phtml视图。     

要回复问题请先登录注册