我正在开发一个基于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;
答案 0 :(得分: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;
}
...我更愿意使用它;)
答案 1 :(得分:1)
最好从viewRenderer中取出它,因为那时你肯定会永远得到它。您可能没有在某些上下文中使用Layout,然后您将无法通过布局获得视图。
所以,要保存一边,将它从viewRenderer拉出来,无论如何它都更直接,因此也更快。
答案 2 :(得分:0)
Zend_Controller_Action_Helper
定义getActionController()
,您可以使用该$view = $this->getActionController()->view;
获取公共视图。也许插件有相同的方法。虽然我不喜欢通过公共财产访问它,但我认为最好通过助手的控制器本身而不是布局。
{{1}}
答案 3 :(得分:0)