Я хочу добавить красную рамку вокруг окна ввода текста, когда проверка 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>
Вы можете использовать FormRow view helper , который по умолчанию будет отображать недействительные элементы с классом CSS («вход-ошибка»).
Использование в шаблоне очень просто:
echo $this->formRow($element);
или если вы хотите создать собственный класс:
echo $this->formRow()->setInputErrorClass('my-error-class')->render($element);
Если вы хотите добавить определенные классы «ошибки» к входу, вам нужно будет изменить связанные классы Zend\Form\View\Helper\Form*
как они представляют Zend\Form\ElementInterface
объекты 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', ), ); }