当ZF2验证失败时,我想在输入文本框周围添加红色边框。我想如果ZF2提供了在验证失败的情况下添加/设置css类的方法。 如果只使用Zend Validation / Form API就可以了。我不是在考虑客户端(javascript / jQuery)解决方案。
更新:
我正在使用像
那样的Form Row元素<div class="row">
<div><?php echo $this->formLabel($form->get('first_name')); ?></div>
<div><?php echo $this->formElement($form->get('first_name')); ?></div>
<div><?php echo $this->formElementErrors($form->get('first_name'), array('class' => "field-validation-error")); ?></div>
</div>
答案 0 :(得分:4)
您可以使用FormRow view helper,它将使用CSS类呈现无效元素(&#34;输入错误&#34;默认情况下)。
在您的模板中使用非常简单:
echo $this->formRow($element);
或者如果你想要自定义类:
echo $this->formRow()->setInputErrorClass('my-error-class')->render($element);
答案 1 :(得分:0)
如果您希望在输入中添加特定的“错误”类,则需要修改相关的Zend\Form\View\Helper\Form*
类,因为这些类是内省Zend\Form\ElementInterface
个对象并呈现所需的HTML。
例如:
// \MyModule\Form\View\Helper\MyCustomFormElement.php
class MyCustomFormElement extends \Zend\Form\View\Helper\FormElement
{
public function render(Element $element)
{
$errors = $element->getMessages();
if (! empty($errors)) {
$classes = $element->getAttribute('class');
if (null === $classes) $classes = array();
if (! is_array($classes)) $classes = explode(' ', $classes);
$classes = array_unique(array_merge($classes, array('my-error-class')));
$element->setAttribute('class', implode(' ', $classes));
}
return parent::render($element);
}
}
然后通过注册一个具有相同名称的invokable来替换默认的表单元素助手。
// Module.php
public function getViewHelperConfig()
{
return array(
'invokables' => array(
'form_element' => 'MyModule\Form\View\Helper\MyCustomFormElement',
),
);
}