【问题标题】:How do I allow html tags in label for Zend form element using addElement()?如何使用 addElement() 在 Zend 表单元素的标签中允许 html 标签?
【发布时间】:2013-12-25 05:35:13
【问题描述】:

我是 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',
));

当然,&lt;img src="picture.png"&gt; 文本被转义并显示整个字符串。

我读到我需要以某种身份使用'escape' =&gt; false,但我不知道在我的具体情况下在哪里/如何使用它。

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

【问题讨论】:

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


    【解决方案1】:

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

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

    如果你经常使用这种类型的标签,你应该考虑writing a custom decorator

    【讨论】:

    • 它没有用。如果我正在正确阅读我的调试器(我可能不是),看起来它正在正确地将转义设置为 false,但它仍然在页面上显示完整的 HTML。
    • 我使用的代码是$this-&gt;getElement('school_name')-&gt;getDecorator('label')-&gt;setOption('escape', false);
    • 啊,想通了。我需要将该代码放在 .phtml 文件中,而不是在构造函数中。明白了。
    • 在添加元素之前我也能做到
    【解决方案2】:

    在向表单添加元素时,您还可以在 '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' 提供答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多