2012-01-09 7 views
0

、私は通常の操作を行います、だから、Zend Framework:モデル内にView変数を設定できますか?私のコントローラで

echo $this->foo; 

:ビュースクリプトで

$this->view->foo = "bar"; 

(私はVIEW-VARSとして、これはvarsの呼び出し)

、私はこれをレンダリングビュースクリプトでレンダリングできるモデル(コントローラではない)の中に "view vars"を定義することが可能かどうか疑問です。

+2

かもしれませんが、あなたはいけない:$view = Zend_Controller_Action_HelperBroker::getExistingHelper('ViewRenderer')->view;

  • アプリケーションブートストラップを経由して、ビューのインスタンスを取得します。それはちょっとパターンの目的を破っている。 – PeeHaa

  • 答えて

    1

    ビューに情報を割り当てることはコントローラの仕事であり、あなたが提案していることをMVCパターンの境界に泥まらせることになります。

    実際に行うべきことは、(コントローラ内の)ビューにモデルを割り当ててから、ビュー内のモデルのさまざまな部分にアクセスすることです。または、コントローラのモデルの関連部分のみを割り当てることもできます。

    1

    モデルが実際にビューを構成する責任を負わないという事実を無視して、モデルが許可されている場合(ViewModelパターンなど)があります。 ビューインスタンスを取得または提供するには、いくつかの方法があります。

    • ビューインスタンスを注入します。コントローラから、それを注入することによってモデルを提供することができます($model->setView($this->view))。
    • ViewRendererヘルパーを経由して、ビューのインスタンスを取得します。あなたは$view = Zend_Controller_Front::getInstance()->getParam('bootstrap')->bootstrap('view')->getResource('view');
    +0

    MVVMの考え方は、Viewをモデルに結合するのではなく、ViewModelをデータバインディングとして使用することです。 – cmbuckley

    関連する問題