2011-10-09 8 views
-1

コントローラーレベルでパーシャルの変数を設定する方法はありますか?Zend Frameworkのパーシャルのためのコントローラのビュー変数を設定しますか?

私は常にそれらを渡すために持っている部分の内部変数を必要と毎回ので:

<?php 
    echo $this->partial('travels/_steps.phtml', 
         array('searchHotel' => $this->searchHotel, 
           'actionName' => $this->actionName)) 
?> 

私は本当にただactionNameなどのすべてのパーシャルに利用できるようにするでしょう - 例えば。

答えて

1

Zend_View_Helper_Partialクラスをその変数をスコープ内に保持するクラスに拡張することができます。

public function cloneView() 
{ 
    $view = parent::cloneView(); 
    $view->actionName = $this->view->actionName 
    return $view; 
} 
1

代わりに$this->render()を使用できます。これは、cloneView()関数をオーバーライドする必要があります。これで、毎回ビュー変数を渡す必要はありません。部分的には、

<?php 
    echo $this->partial('travels/_steps.phtml', array('parentView' => $this)); 

その後:あなたはまた、単に部分的にパラメータとして現在のビューを送った可能性が

1

役立ちます

希望、私の謙虚で

<?php 
    $view = $this->parentView; 
    echo $view->searchHotel, $view->actionName; 
-2

あなたがしなければならないことを正確にやっている - あなたが部分的に必要とする変数だけを渡すこと。

これが原因で痛みを感じる場合は、不必要に部分音節を使用していると考えられます。

または、言い換えると、一部の変数をすべての部分変数で使用できるようにするには、部分変数はそれらの変数を使用する場所ではないかもしれません。

おそらくPlaceholdersを見て、あなたのビューをレンダリングする方法を再考してください。

+0

申し訳ありませんが、私はちょうど私の部分的な部分のいくつかの一般的な変数にアクセスする便利な方法を必要とする、複雑にする必要はありません。 – David

+0

パーシャルの背後にある考え方は、変数の範囲が限られているため、必要な変数だけを渡すことができます。あなたがそれらを悪用しない限り、それは不便ではありません。 – jah

+0

私はむしろ変数のスコープを制限するのではなく、コードの重複を避けるためにパーシャルを使用すべきだと言っています(しかし恐らく結果になります) – edi9999

関連する問題