我有一个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', ....));
我认为这是导致输入标签显示为错误列表的一部分的原因。
答案 0 :(得分:0)
如果您使用的是FormErrors
装饰器,那么您有两种方法可以停止转义标签:
第一个选项:
使用Zend_View::setEscape
方法指定另一个Zend_View转义回调
第二种选择:
创建自定义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');
/* ... */
}
}