查看loading"手工"在zend

时间:2011-12-14 10:22:53

标签: php zend-framework

我正在使用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/)

看起来无法抑制普通视图渲染。知道怎么做吗?

2 个答案:

答案 0 :(得分:1)

可能最好禁用ViewRenderer而不是删除它。在控制器中:

$this->_helper->viewRenderer->setNoRender(true);

请记住,ViewRendererZend_Form个实例为自己的渲染提取默认视图的地方。删除ViewRenderer意味着以后需要在表单需要渲染时重新实例化它。但是当它这样做时,它会重新创建一个全新的 Zend_View实例。您已应用于视图的任何设置(例如,在引导程序,设置doctype等)都将丢失。

答案 1 :(得分:0)

好的我会自己回答:)

必须防止Zend_Controller_Action_Helper_ViewRenderer处理的正常行为

您可以在控制器中执行此操作,然后执行View实例化业务。

$this->_helper->removeHelper('viewRenderer'); // stop the default views rendering process

欢呼声