2

我有一个 Zend 文本元素,它在标签中包含 HTML。->setOption('escape', false);我可以通过添加选项来阻止 Zend 在其中转义 HTML 。这按预期工作。

但是,当出现错误时,错误会显示标签 HTML 已转义为错误消息的标题。我得到的东西看起来像这样:

<strong>First</strong> name
Please enter your first name

我正在考虑几种可以解决此问题的方法,但不确定是否可行。我可以更改错误的格式,使其不直接使用输入标签吗?或者有没有办法阻止 Zend 在错误中转义 HTML?

编辑:我没有在输入旁边显示每个输入错误。相反,我将所有错误分组并立即显示它们。每个元素都删除了错误装饰器:

$firstName->removeDecorator('Errors');

然后我通过添加FormErrors装饰器将它们显示为一个组:

$myForm->setDecorators(array('FormErrors', ....));

我认为这就是导致输入标签显示为错误列表的一部分的原因。

4

1 回答 1

0

如果您正在使用FormErrors装饰器,那么您有两种选择如何停止转义标签:

第一个选项:使用方法指定另一个 Zend_View 转义回调Zend_View::setEscape第二个选项:创建自定义FormErrors装饰器并覆盖renderLabel方法。

例子:

class My_Form_Decorator_FormErrors extends Zend_Form_Decorator_FormErrors
{
    public function renderLabel(Zend_Form_Element $element, Zend_View_Interface $view)
    {
        return $this->getMarkupElementLabelStart()
             . $element->getLabel()
             . $this->getMarkupElementLabelEnd();
    }    
}

class Forms_Example extends Zend_Form
{
    public function init()
    {
        /* ... */
        $this->addPrefixPath('My_Form_Decorator', 'My/Form/Decorator', 'decorator');
        /* ... */   
    }
}
于 2013-07-16T06:01:30.630 回答