是否可以在之前添加的裝飾器中修改Zend_Form_Element的html屬性?如何修改裝飾器中Zend_Form_Element的屬性
可以說我有一個名爲RichTextArea的裝飾器。當我將它添加到Zend_Form_Element_Textarea時,我希望裝飾器將類「rich」添加到textarea。
最終的輸出應該是這樣的:
<textarea name="content" id="content" class="rich" />
是否可以在之前添加的裝飾器中修改Zend_Form_Element的html屬性?如何修改裝飾器中Zend_Form_Element的屬性
可以說我有一個名爲RichTextArea的裝飾器。當我將它添加到Zend_Form_Element_Textarea時,我希望裝飾器將類「rich」添加到textarea。
最終的輸出應該是這樣的:
<textarea name="content" id="content" class="rich" />
這是可能的,但語法取決於你是如何構建的形式一點點。最簡單的方法就是做元素本身爲你添加:
$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的自定義表單元素,並且始終將其添加到它。
它可以添加任何HTML屬性與
// @var Zend_Form_Element $element
$element->setAttribute($key, $value);
但你也可以訪問屬性的屬性一樣
$element->key = $value;
欲瞭解更多信息,請閱讀Zend的-文檔本節:http://framework.zend.com/manual/1.12/en/zend.form.elements.html#zend.form.elements.metadata
我認爲唯一真正的解決方案是擴展Zend \ _Form \ _Element \ _Textarea,就像您所說的那樣...我會接受您的解決方案,因爲我看不到其他方式來執行它 – Sylvain 2009-05-29 00:23:11