Zend framework 哪种方法更适合获得Zend_视图

Zend framework 哪种方法更适合获得Zend_视图,zend-framework,zend-view,zend-layout,Zend Framework,Zend View,Zend Layout,我正在开发一个基于Zend Framework的应用程序,在控制器插件中,我可以通过以下方法获得Zend_View对象,有人请告诉我哪种方法更好,为什么 $view = Zend_Layout::getMvcInstance()->getView(); 或 $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); if (null === $viewRenderer->

我正在开发一个基于Zend Framework的应用程序,在控制器插件中,我可以通过以下方法获得Zend_View对象,有人请告诉我哪种方法更好,为什么

$view = Zend_Layout::getMvcInstance()->getView();

$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
if (null === $viewRenderer->view)
    $viewRenderer->initView();

$view = $viewRenderer->view;

因为
Zend\u Layout::getView()
方法如下所示:

public function getView()
{
    if (null === $this->_view) {
        require_once 'Zend/Controller/Action/HelperBroker.php';
        $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
        if (null === $viewRenderer->view) {
            $viewRenderer->initView();
        }
        $this->setView($viewRenderer->view);
    }
    return $this->_view;
}

。。。我宁愿使用它;)

Zend\u Controller\u Action\u Helper
定义了
getActionController()
,您可以使用它获取公共视图。也许插件也有同样的方法。虽然我不喜欢通过公共属性访问它,但我认为通过助手的控制器本身比通过布局更好

$view = $this->getActionController()->view;

如果从layout中提取视图,这两种情况是不同的,返回视图实例基本上可以帮助您访问layout.phtml中的视图变量,另一方面,从viewRender action helper获取视图将帮助您访问action.phtml(特定控制器动作的视图)中的视图变量.

最好从viewRenderer中提取它,因为这样您就可以确保始终获得它。您可能在某些上下文中未使用布局,因此无法通过布局获取视图

$view = $this->getActionController()->view;

因此,为了便于保存,请将其从viewRenderer中拉出来,它更直接,因此速度也更快。

如果您能分享什么时候布局方法更好,什么时候应该使用viewRenderer,我将不胜感激。现在我正在写一个控制器插件,我需要访问查看对象,所以哪种方法更适合suits.thou是两件不同的事情。viewRenderer负责确定目标视图脚本,并在执行操作后自动渲染。Zend_布局用于常规布局脚本。如果您使用的是MVC,您应该能够使用
$this->view
从控制器访问视图。是的,我可以访问控制器中的视图,但我需要访问控制器插件中的视图,插件对象不能直接访问视图。所以需要知道什么样的方法更好。谢谢David,但我不是说Zend_Controller_Action_helper_Abstract,我是说Zend_Controller_Plugin_Abstract,在那里我们只能访问响应(Zend_Controller_response_Http)和请求(Zend_Controller_request_Http)对象EAH,我面前没有代码,无法再次检查。我想控制器插件不是设计用来从控制器本身使用的?嗯,所以你是说,如果我分配一个变量从布局查看,该变量将只能在layout.phtml中访问,而分配给view from viewer的变量只能在action.phtml中使用。我认为变量在两个脚本中都可用,但不确定。检查…当不使用布局时会发生什么?