如何在Decorator中修改Zend_Form_Element的属性

时间:2009-05-28 16:58:46

标签: php zend-framework

是否可以在先前添加的Decorator中更改Zend_Form_Element的html属性?

假设我有一个名为RichTextArea的装饰器。当我将它添加到Zend_Form_Element_Textarea时,我希望装饰器将类“rich”添加到textarea。

最终输出应如下所示:

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

2 个答案:

答案 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