是否可以在先前添加的Decorator中更改Zend_Form_Element的html属性?
假设我有一个名为RichTextArea的装饰器。当我将它添加到Zend_Form_Element_Textarea时,我希望装饰器将类“rich”添加到textarea。
最终输出应如下所示:
<textarea name="content" id="content" class="rich" />
答案 0 :(得分: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的自定义表单元素,并始终将您的类添加到它。
答案 1 :(得分:1)
可以使用
添加任何HTML-Attribute// @var Zend_Form_Element $element
$element->setAttribute($key, $value);
但您也可以将属性作为属性访问
$element->key = $value;
有关更多信息,请阅读Zend-Documentation中的本节:http://framework.zend.com/manual/1.12/en/zend.form.elements.html#zend.form.elements.metadata