Стандартные помощники видов форм, предоставляемые ZF3, показаны ниже в таблицах 7.13 - 7.16.
Эти классы содержатся в пространстве имен @sZend\Form\View\Helper
. Как видно из раблиц, помощники
видов можно разделить на следующие категории:
Общие помощники видов форм. Эти классы предназначены для визуализации
формы целиком (помощник Form
) или одного ее элемента (помощник FormElement
),
а также возможных ошибок валидации (помощник FormElementErrors
).
Помощники видов для визуализации HTML-полей определенных типов. Эти помощники позволяют
генерировать HTML-разметку для конкретных полей форм (например, FormButton
, FormRadio
и т.д.)
и текстовую метку (FormLabel
).
Помощники видов для визуализации полей форм, введенных в HTML5. Аналогичнв
помощникам из предыдущей категории, но предназначены для визуализации HTML-5
полей (например, FormDate
, FormUrl
и т.д.)
Другие помощники видов. В эту категорию мы поместим классы помощников видов, предназначенные
для визуализации полей, предоставляемых ZF3 (FormMultiCheckbox
, FormCaptcha
и др.)
Имя метода | Описание |
---|---|
Общие помощники | |
Form |
Визуализирует форму целиком и все ее элементы. |
FormElement |
Визуализирует один элемент формы. |
FormElementErrors |
Визуализирует ошибки валидации для элемента формы. |
FormRow |
Визуализирует метку, поле и ошибки валидации |
Имя метода | Описание |
---|---|
FormButton |
Визуализирует поле формы <button> . |
FormCheckbox |
Визуализирует поле <input type="checkbox"> field. |
FormFile |
Визуализирует поле формы <input type="file"> . |
FormHidden |
Визуализирует поле формы <input type="hidden"> . |
FormInput |
Визуализирует поле формы <input> . |
FormImage |
Визуализирует поле формы <input type="image"> . |
FormLabel |
Визуализирует тег <label> . |
FormPassword |
Визуализирует поле формы <input type="password"> . |
FormRadio |
Визуализирует поле формы <input type="radio"> . |
FormReset |
Визуализирует поле формы <input type="reset"> . |
FormSelect |
Визуализирует выпадающее поле <select> . |
FormSubmit |
Визуализирует поле формы <input type="submit"> . |
FormText |
Визуализирует поле формы <input type="text"> . |
FormTextarea |
Визуализирует многострочное текстовое поле <textarea> . |
Имя метода | Описание | |
---|---|---|
FormColor |
Визуализирует HTML5-поле формы <input type="color"> . |
|
FormDate |
Визуализирует HTML5-поле формы <input type="date"> . |
|
FormDateTime |
Визуализирует HTML5-поле формы <input type="date"> . |
|
FormDateTimeLocal |
Визуализирует HTML5-поле формы <input type="datetime-local"> . |
|
FormEmail |
Визуализирует HTML5-поле формы <input type="email"> . |
|
FormMonth |
Визуализирует HTML5-поле формы <input type="month"> . |
|
FormNumber |
Визуализирует HTML5-поле формы <input type="number"> . |
|
FormRange |
Визуализирует HTML5-поле формы <input type="range"> . |
|
FormTel |
Визуализирует HTML5-поле формы <input type="tel"> . |
|
FormTime |
Визуализирует HTML5-поле формы <input type="time"> . |
|
FormUrl |
Визуализирует HTML5-поле формы <input type="url"> . |
|
FormWeek |
Визуализирует HTML5-поле формы <input type="week"> . |
Имя метода | Описание |
---|---|
FormCaptcha |
Визуализирует поле безопасности CAPTCHA. |
FormDateSelect |
Визуализирует поле выбора даты. |
FormDateTimeSelect |
Визуализирует поле выбора даты и времени. |
FormMonthSelect |
Визуализирует поле выбора месяца. |
FormMultiCheckbox |
Визуализирует поле нескольких флажков. |
FormCollection |
Визуализирует коллекцию элементов. |
В следующих разделах мы опишем несколько наиболее часто используемых помощников видов, а также представим примеры их использования.
Поле формы можно визуализировать с помощью помощника вида FormElement
. Он задуман быть
максимально гибким и распознавать как можно больше типов полей. Так, с его помощью вы можете
создавать HTML-разметку для текстовых полей, кнопок, выпадающих списков и т.д.
Методы, предоставляемые этим помощником, перечислены в таблице 7.17.
Имя метода | Описание |
---|---|
render($element) |
Магический PHP-метод, который визуализирует заданное поле формы. |
__invoke($element) |
Магический PHP-метод, который визуализирует заданное поле формы (тот же эффект, что и от render() ). |
Как видите, существуют два метода, делающие одно и то же:
render()
создает HTML-разметку для поля формы.
Он принимает один аргумент -- экземпляр элемента, который нужно визуализировать. Вы
можете извлечь элемент формы с помощью метода модели формы get()
(см. пример ниже).__invoke()
- это удобная обертка, в этом случае требуется писать меньше кода.<?php
// Мы полагаем, что модель формы хранится в переменной $form.
// Визуализируем поле эл. почты с помощью метода render().
echo $this->formElement()->render($form->get('email')); ?>
// То же самое, но с помощью __invoke
echo $this->formElement($form->get('email'));
После выполнения фрагмента выше, сгенерируется следующий HTML-код:
<input type="text" name="email" id="email" value="">
Как правило, нет необходимости вызывать помощники видов для определенных полей HTML (или HTML5) (например,
FormText
FormSubmit
и др.) Вместо этого можно использовать общий помощник видаFormElement
, который автоматически определяет тип поля и создает нужный HTML-код.
Класс помощника вида FormElementErrors
позволяет создать HTML-разметку для
ошибок валидации полей (если они есть). Если для определенного элемента нет ошибок
валидации, помощник не создаст выходных данных.
Пример использования помощника вида FormElementErrors
представлен ниже:
<?php
// Мы полагаем, что модель формы хранится в переменной $form.
// Визуализируем ошибки валидации для поля эл. почты.
echo $this->formElementErrors($form->get('email'));
Если ошибки валидации были, этот код сгенерирует неупорядоченный список ошибок, используя
HTML-тег <ul
>. Этот список будет содержать столько элементов, сколько ошибок у определенного
поля. Пример такого списка для поля эл. почты нашей формы обратной связи показан ниже:
<ul>
<li>'hostname' is not a valid hostname for the email address</li>
<li>The input does not match the expected structure for a DNS hostname</li>
<li>The input appears to be a local network name but local network names are not allowed</li>
</ul>
Помощник FormLabel
позволяет визуализировать текстовую метку для элемента:
<?php
// Мы полагаем, что модель формы хранится в переменной $form.
// Визуализируем текстовую метку для поля эл. почты.
echo $this->formLabel($form->get('email'));
После выполнения фрагмента выше, сгенерируется следующий HTML-код:
<label for="email">Your E-mail</label>
Помощник вида FormRow
предназначен для упрощения визуализации поля формы,
его метки и ошибок валидации. С помощью этого класса можно визуализировать
эти элементы одним действием. Этот помощник гибко настраиваемый, так что вы можете
применить другое оформление для строки формы. Методы этого помощника вида перечислены
в таблице 7.18.
Имя метода | Описание |
---|---|
render($element) |
Визуализирует строку формы. |
__invoke($element, $labelPosition, $renderErrors, $partial) |
Визуализирует строку формы (обертка). |
setInputErrorClass($inputErrorClass) |
Задает SSS-класс ошибки входных данных. |
setLabelAttributes($labelAttributes) |
Задает атрибуты метки. |
setLabelPosition($labelPosition) |
Задает позицию метки. (перед или после поля). |
setRenderErrors($renderErrors) |
Устанавливает, визуализируются ли ошибки этим помощником. |
setPartial($partial) |
Задает частичный скрипт вида, используемый для визуализации строки. |
Пример использования помощника вида FormRow
представлен ниже:
<?php
// Мы полагаем, что модель формы хранится в переменной $form.
// Визуализируем поле эл. почты, его метку и (возможно) ошибки валидации.
echo $this->formRow($form->get('email'));
После выполнения фрагмента выше, сгенерируется следующий HTML-код:
<label for="email">Your E-mail</label>
<input type="text" name="email" id="email">
<ul>
<li>'hostname' is not a valid hostname for the email address</li>
<li>The input does not match the expected structure for a DNS hostname</li>
<li>The input appears to be a local network name but local network names
are not allowed</li>
</ul>
Помощник вида Form
позволяет визуализировать открывающий тег <form>
и его атрибуты;
и закрывающий тег </form>
. Но его главная цель - это визуализация целой формы и всех
ее полей одной строчкой кода. Public-методы помощника вида Form
[Zend\Form\View\Helper\Form] резюмированы в таблице 7.19.
Имя метода | Описание |
---|---|
render($form) |
Визуализация целой формы и всех ее полей. |
__invoke($form) |
Магический PHP-метод, который визуализирует целую форму и все ее элементы (тот же эффект, что и от render() ). |
openTag($form) |
Визуализирует открывающий тег <form> . |
closeTag() |
Визуализирует закрывающий тег </form> tag. |
Вы можете визуализировать форму целиком с помощью метода render()
следующим образом:
// Мы полагаем, что модель формы хранится в переменной $form.
// Визуализируем форму целиком
echo $this->form()->render($form);
Того же результата можно достичь магическим методом __invoke
(см. пример ниже):
// То же самое, но с помощью `__invoke`
echo $this->form($form);