2009-05-28 55 views
0

是否可以在之前添加的裝飾器中修改Zend_Form_Element的html屬性?如何修改裝飾器中Zend_Form_Element的屬性

可以說我有一個名爲RichTextArea的裝飾器。當我將它添加到Zend_Form_Element_Textarea時,我希望裝飾器將類「rich」添加到textarea。

最終的輸出應該是這樣的:

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

回答

4

這是可能的,但語法取決於你是如何構建的形式一點點。最簡單的方法就是做元素本身爲你添加:

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

,或者如果你的質量分配的裝飾,如:

$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'); 

如果您使用的是富文本編輯器像TinyMCE的或者類似的,另一個選項可能是創建一個擴展Zend_Form_Element_Textarea的自定義表單元素,並且始終將其添加到它。

+0

我認爲唯一真正的解決方案是擴展Zend \ _Form \ _Element \ _Textarea,就像您所說的那樣...我會接受您的解決方案,因爲我看不到其他方式來執行它 – Sylvain 2009-05-29 00:23:11