2012-01-17 8 views
2

パーシャルビューに変数を渡す明確な方法を探しています。私は私のコントローラで変数をパーシャルビューに渡す方法をきれいにする

::次のコード例を考えてみましょう

私は私の articles.phtmlビューで
$this->view->articles = $arrayWithArticles; 
$this->render('articles.phtml'); 

:私は別のコントローラで

foreach($this->articles as $article) { 
    // show article 

    $this->render('comments.phtml'); 
} 

$this->view->products = $arrayWithProducts; 
$this->render('products.phtml'); 

私のproducts.phtmlビュー私は:

foreach($this->products as $product) { 
    // show product 

    $this->render('comments.phtml'); 
} 

あなたは私が書かれた記事だけでなく、製品についてのコメントを表示するために同じ(部分)ビューcomments.phtmlを使用見ることができるように。私が表示したい「コメント」は$article->comments$product->reviewsです。部分ビューには、これらを表示するために必要になります。

部分ビューにそれらを渡す明確な方法はありますか。私は本当にしたくない:

$this->comments = $article->comments; 
$this->render('comments.phtml'); 

これは潜在的に(つまりビューのようにコントローラの両方で同じビューの変数を設定する)トラックオフ保つために苦痛になるので。

パーシャルビューに変数を渡すクリーンなソリューションはありますか?

答えて

1

まあ、あなたのrender()メソッドにパラメータを追加すれば十分だと思います。たぶん何かのような...

$this->renderSubView($fileName, $data); 

次に renderSubView()にあなたはそれはあなたが配列で行い、レンダリングされた部分ビューを返す必要があることは何でも行うことができます。この方法では、ビュー内で変数を再宣言する必要はなく、レンダリング時にその特定の部分に適切なデータを渡すだけです。

関連する問題