如何使用addElement()在Zend表单元素的标签中允许html标签?

时间:2013-12-07 23:39:49

标签: zend-framework escaping zend-form-element zend-decorators

我是Zend的新手,我已经获得了一个可以进行调整的项目。我想将html添加到我的表单元素的标签中,但我似乎无法正确使用它。

这就是我所拥有的:

$this->addElement('text', 'school_name', array(
    'filters' => array('StringTrim'),
        'validators' => array(
            array('StringLength', false, array(0, 150)),
        ),
    'required' => true,
    'label' => 'Name* :<img src="picture.png">,
    'size' => '90',
));

当然,<img src="picture.png">文本会被转义并显示整个字符串。

我已经读过,我需要以某种身份使用'escape' => false,但在我的具体情况下,我无法弄清楚在何处/如何使用它。

任何帮助都会很棒。谢谢!

2 个答案:

答案 0 :(得分:8)

在调用addElement后,获取标签的装饰器并更改转义设置:

$form->getElement('school_name')->getDecorator('label')->setOption('escape', false);

如果您经常使用此类标签,则应考虑writing a custom decorator

答案 1 :(得分:6)

在向表单添加元素时,您还可以在'label_options'中使用disable_html_escape:

$this->add(array(
    ....
    'options' => array(
        'label' => '<span class="required">Name</span>,
        'label_options' => array(
             'disable_html_escape' => true,
         )
     ),
    ...
));

感谢Théo Bouveret's post 'Button content in ZF2 forms'获得答案。