1

我正在开发基于 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;
4

4 回答 4

2

由于Zend_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;
}

...我更愿意使用它;)

于 2011-09-21T00:08:00.500 回答
1

最好从 viewRenderer 中提取它,因为这样您就可以确定您总会得到它。您可能没有在某些情况下使用布局,然后您将无法通过布局获得视图。

所以,在保存方面,从 viewRenderer 中提取它,无论如何它更直接,因此也更快。

于 2011-09-21T13:42:44.427 回答
0

Zend_Controller_Action_Helper定义getActionController()您可以获得公共视图的内容。也许插件有相同的方法。虽然我不喜欢通过公共属性访问它,但我相信通过助手的控制器本身比布局更可取。

$view = $this->getActionController()->view;
于 2011-09-21T02:39:46.890 回答
0

如果您从布局中提取视图而不是返回视图实例,那么两者都是两件不同的事情,基本上将帮助您访问 layout.phtml 中的视图变量,另一方面,从 viewRender 操作助手获取视图将帮助您访问操作中的视图变量.phtml(特定控制器操作的视图)。

于 2011-09-21T03:25:21.207 回答