Это мой третий вопрос на этой неделе (и вообще) - надеюсь, меня здесь не забанят :D В любом случае, я поискал и не смог найти точного объяснения для решения моей проблемы (проблем).
О. Я поискал и нашел пользовательский ViewHelper для отображения моих форм. Что он делает, так это рекурсивно получает все наборы полей, и когда он достигает уровня элемента, он выглядит следующим образом:
public function renderElement($element) {
$html = '
<div class="row">' .
'<label class="col-md-12" for="' . $element->getAttribute('id') . '">' . $element->getLabel() . '</label>' .
$this->view->formElement($element) .
$this->view->FormElementErrors($element) .
'<div class="clearfix" style="height: 15px;"></div>';
return $html . PHP_EOL;
}
Форма отображается нормально, за исключением: 1) Как я могу добавить класс ошибки к элементу формы? (например, если я использую помощник formRow в своем представлении, он автоматически объявляет класс «ошибка ввода», а также сохраняет начальный класс, указанный в моем наборе полей при создании элемента - «атрибуты» => массив («класс» => ' some-class')), поэтому атрибут class элемента становится "some-class input-error", если он недействителен. 2) Как я могу установить класс для 'ul', содержащего сообщения об ошибках ('ul', отображаемый $this->view->FormElementErrors($element))? Надеюсь, что это однострочник, и мне не нужно переходить от сообщения к сообщению и составлять html для списка сообщений об ошибках, но если нет, то пусть будет так (я тоже не знаю, как это сделать).
B. Допустим, иногда я не использую этот пользовательский ViewHelper для рендеринга моей формы. Помощник представления Zend formRow иногда может быть удобен. Это подводит меня к следующему коду, на мой взгляд:
echo $this->formRow($this->form->get('user_fieldset')->get('user_name'));
Я заметил, что это автоматически добавляет класс «input-error» к моему элементу (в случае, если он недействителен), что идеально, НО как я могу также указать formRow, чтобы дать класс «ul», который отображает сообщения об ошибках?
Я бы пошел еще дальше и спросил, как я могу повернуть это:
echo $this->formLabel($this->form->get('user_fieldset')->get('user_name'));
echo $this->formInput($this->form->get('user_fieldset')->get('user_name'));
echo $this->formElementErrors($this->form->get('user_fieldset')->get('user_name'), array('class' => 'form-validation-error'));
во что-то, что также добавляет класс ошибок к элементу, а не только к списку сообщений об ошибках, но если кто-то ответит на пункт A, я думаю, что это та же проблема.