2011-09-16 13 views
0

私は実際にすべてのフォーム要素にジェネリックデコレータを持たせたいと思っていますが、同時にいくつかのデコレータを変更することもできます非常に具体的な要素です。php Zend Framework - まだ変更されていない場合にのみデコレータを変更する

私のすべての要素に新しいジェネリックデコレータを追加したいとします。私は親の汎用フォームクラスのaddElementメソッドでそれを行います。

public function addElement($element, $name = null, $options = null) 
{ 
    parent::addElement($element, $name, $options); 

    if (! is_object($element)) { 
     $element = $this -> getElement($name); 
    } 

    if (is_object($element)) 
    { 
     $element -> clearDecorators(); 
     $element -> addDecorators($this -> elementDecorators); 
    } 

    return $this; 
} 

今、私はいくつかの形態のいくつかの要素に非常に具体的なニーズを持っています。たとえば、Zend_Formウィッヒを拡張するMy_FormクラスにMy_Form_User含む実際の要素の宣言によって拡張されるだろう、私のようなものを持っているでしょう。 (My_Form_Userクラスの)要素を作成するときにこれらのデコレータを設定しますが、フォームにaddElementを追加すると、1つのデコレータ(ViewHelperまたはまたはLabel)をチェックする方法が見つかりません。 ..)が変更されたので、私はそれを一般的なもので消去しません。

ありがとう!

答えて

0

それは

  • getDecorator($名)
  • getDecorators()
  • removeDecorator($名)

...多分これは役立ちます少し短いですが、...既に。

+0

実際に私がgetDecorator($ name)を実行すると、Zendのデフォルトのデコレータがロードされているので、いつも何かがありますか? – jhuet

+0

あなたがデコレータを保持したり削除したりしたいのであれば、どれを知っているべきでしょうか?それらがデフォルトであるかどうかは違いますか? – hakre

+0

My_Formクラス(My_Form_Userではありません)で私の例を取り上げると、特定のデコレータを持つ要素がわかりません。それはちょうど私の質問のポイントです、私はそれを知る方法が欲しいです:) – jhuet

関連する問題