1

私はZendFrameworkベースのアプリに取り組んでおり、コントローラープラグインでは、次のメソッドで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_HelpergetActionController()パブリックビューを取得できるものを定義します。おそらくプラグインも同じ方法です。公共の施設からアクセスするのは好きではありませんが、レイアウトよりもヘルパーのコントローラー自体を経由する方が望ましいと思います。

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

ビューをレイアウトからプルする場合、ビューを返す場合は基本的にlayout.phtml内のビュー変数にアクセスするのに役立ちますが、viewRenderアクションヘルパーからビューを取得すると、アクションのビュー変数にアクセスするのに役立ちます。 .phtml(特定のコントローラーアクションの表示)。

于 2011-09-21T03:25:21.207 に答える