#php #zend-form
#php #zend-form
Вопрос:
Я могу заставить ошибки отображаться после элемента form, но не непосредственно после тега label элемента form. Кто-нибудь знает, как я могу это сделать?? Заранее спасибо! Приветствия.
Комментарии:
1. Вы имеете в виду, что хотите показывать ошибки между меткой и элементом?
2. Спасибо за ответ, Фил. Я хочу показывать ошибки после метки, но в пределах тега definition term.
Ответ №1:
Если вы хотите поместить ошибки элемента между элементом и его меткой, сохраняя стандартную разметку dt / dd, используйте что-то вроде этого
$element->setDecorators(array(
'ViewHelper',
array('Errors', array('placement' => 'prepend')),
array('HtmlTag', array('tag' => 'dd')),
array('Label', array('tag' => 'dt'))
));
Важная часть — это 'placement' => 'prepend'
в декораторе ошибок.
Комментарии:
1. Фил, какой был бы наилучший способ настроить эти декораторы для применения ко всем формам? Должен ли я расширить функцию Zend_Form::addElement() вашим кодом?
2. @blacktie24 Вы можете использовать
Zend_Form::setElementDecorators()
для настройки всех декораторов элементов, однако это может не подойти. Другое предложение, хотя и довольно длинное, заключается не только в расширенииZend_Form
, но и во всех элементах. Смотрите здесь и здесь пример3. фил, я могу заставить его отображать только следующим образом: <идентификатор dt=»email-label»><label for=»email» class=»required»> Электронная почта:</label></dt> <label class=»error» сгенерировано =»true»> Значение обязательно и не может быть пустым</label> <dd><имя ввода=»email» идентификатор =»email» значение = «» class=»full» тип =»text»> </dd> Я пытаюсь сделать так, чтобы сообщение об ошибке находилось внутри тега definition term. Возможно ли это?
4. @blacktie24 Используя точный код в моем ответе, ошибки находятся внутри
<dd>
. Вы хотите сказать, что хотите, чтобы они были внутри<dt>
?5. да, это то, о чем я спрашивал, действительно сожалею об отсутствии ясности в вопросе. Однако я просматривал код, и, похоже, это невозможно без расширения errors amp; label decorators, правильно ли это?
Ответ №2:
Я почти уверен, что вы можете сделать это, изменив декоратор, используемый для отображения элементов формы.
Проверьте здесь http://devzone.zend.com/article/3450
Эта статья поможет вам создать альтернативные декораторы для элементов.
Также здесь есть статья Zend о стандартных декораторах.
http://framework.zend.com/manual/en/zend.form.standardDecorators.html
Комментарии:
1. В этом сила шаблона декоратора. Очень удобно в примерах вроде разметки формы. en.wikipedia.org/wiki/Decorator_pattern