在 ZF 中指定的表单验证器消息中添加 css class

Add css class to the specified form validator message in ZF

是否可以像这样获取表单验证器消息标记?

<ul class="error">
    <li>Error msg 1</li>
    <li class="custom">Error msg 2</li>
</ul>

使用 'Error' 和 'HtmlTag' 表单装饰器我只能这样做:

<span class="custom">
  <ul class="error">
    <li>Error msg 1</li>
    <li>Error msg 2</li>
  </ul>
</span>

这是我的元素代码:

$this->addElement('text', 'domain', array(
'label' => $this->getTranslator()->_('Your domain'),
'attribs' => array(
    'maxlength' => 200,
    'size' => 30
),
'validators' => array(),
'filters' => array(),
'required' => TRUE,
'decorators' => array('Errors',
        array('HtmlTag', array('tag' => 'span', 'class' => 'custom'))
    ),
));

谢谢!

默认情况下,元素错误是使用 Zend_Form_Decorator_Errors (source) decorator and Zend_View_Helper_FormErrors (source) 视图助手呈现的。装饰器不支持每个错误行的自定义属性。

要允许每个错误的自定义属性,您首先需要 extend/override Zend_Form_Decorator_Errors#render() 方法来检索每个错误的特定选项并将其提供给 $view->formErrors($errors, $this->getOptions());。然后,您需要覆盖 Zend_View_Helper_FormErrors#formErrors() 以将特定属性添加到 <li> 元素。