私は実際にすべてのフォーム要素にジェネリックデコレータを持たせたいと思っていますが、同時にいくつかのデコレータを変更することもできます非常に具体的な要素です。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
)をチェックする方法が見つかりません。 ..)が変更されたので、私はそれを一般的なもので消去しません。
ありがとう!
実際に私がgetDecorator($ name)を実行すると、Zendのデフォルトのデコレータがロードされているので、いつも何かがありますか? – jhuet
あなたがデコレータを保持したり削除したりしたいのであれば、どれを知っているべきでしょうか?それらがデフォルトであるかどうかは違いますか? – hakre
My_Formクラス(My_Form_Userではありません)で私の例を取り上げると、特定のデコレータを持つ要素がわかりません。それはちょうど私の質問のポイントです、私はそれを知る方法が欲しいです:) – jhuet