我正在使用zend框架并尝试从控制器内部创建和呈现视图。通常这个过程由框架处理,但我认为我也可以自己做documentation states的这一部分。
不幸的是,由于框架仍在尝试加载默认视图,因此存在问题。这是我的控制器
<?php
class ViewController extends Zend_Controller_Action {
private $viewsFolder = null;
public function init()
{
$this->viewsFolder = realpath(dirname(__FILE__)) . '/../views/custom/';
}
public function indexAction()
{
// using a custom view (initialization and rendering executed by hand)
$view = new Zend_View();
$view->setScriptPath($this->viewsFolder);
$view->assign(array(
"dev_name" => "Fabs",
"framework" => "Zend frmwrk"
));
echo $view->render('customView.phtml');
}
}
这是我得到的错误
Message: script 'view/index.phtml' not found in path (/home/ftestolin/stuff/rubrica/application/views/scripts/)
看起来无法抑制普通视图渲染。知道怎么做吗?
答案 0 :(得分:1)
可能最好禁用ViewRenderer
而不是删除它。在控制器中:
$this->_helper->viewRenderer->setNoRender(true);
请记住,ViewRenderer
是Zend_Form
个实例为自己的渲染提取默认视图的地方。删除ViewRenderer
意味着以后需要在表单需要渲染时重新实例化它。但是当它这样做时,它会重新创建一个全新的 Zend_View
实例。您已应用于视图的任何设置(例如,在引导程序,设置doctype等)都将丢失。
答案 1 :(得分:0)
好的我会自己回答:)
必须防止Zend_Controller_Action_Helper_ViewRenderer处理的正常行为
您可以在控制器中执行此操作,然后执行View实例化业务。
$this->_helper->removeHelper('viewRenderer'); // stop the default views rendering process
欢呼声