2009-05-28 17 views
0

以前に追加されたデコレータのZend_Form_Elementのhtml属性を変更することはできますか?デコレータのZend_Form_Elementの属性を変更する方法

私はRichTextAreaという名前のデコレータを持っていると言います。 Zend_Form_Element_Textareaに追加すると、デコレータがテキストエリアに "rich"というクラスを追加します。

最終的な出力は次のようになります。それは可能ですが、構文はフォームを構築しているどのようにほとんど依存

<textarea name="content" id="content" class="rich" />

答えて

4

。最も簡単な方法は、あなたがそれを追加すると、要素自身でそれを行うことです。

$element = new Zend_Form_Element_Text('something'); 
$element->class = 'rich'; 
$form->addElement($element); 

か、デコレーター、例えば大量割り当てた場合:あなたはTinyMCEのようなリッチテキストエディタを使用している場合

$element = new Zend_Form_Element_Text('something'); 
$element->setDecorators(array(
    'Errors', 
    'Label', 
    array(array('row' => 'HtmlTag'), array('tag' => 'div')) 
)); 

[...] 

$decorator = $element->getDecorator('row'); 
$decorator->setOption('class', 'rich'); 

をZend_Form_Element_Textareaを継承したカスタムフォーム要素を作成し、常にそのクラスをクラスに追加することもできます。

+0

あなたが言ったようにZend \ _Form \ _Element \ _Textareaを拡張するのは唯一の真の解決策だと思います...私はそれを行う方法が他にないのであなたの解決策を受け入れます – Sylvain

1

それは

// @var Zend_Form_Element $element 
$element->setAttribute($key, $value); 

で任意のHTML属性を追加することが可能です。しかし、あなたはまた、Zendの-ドキュメントでは、このセクションを読んで詳細については

$element->key = $value; 

のようにプロパティとして属性にアクセスすることができますhttp://framework.zend.com/manual/1.12/en/zend.form.elements.html#zend.form.elements.metadata

関連する問題