В Zend Framework 2 есть набор помощников, разработанных специально для форм: отображение текстовых полей, имен полей, выпадающих списков и т.д.
Помощник вида Form используется для отображения HTML элемента <form> и его атрибутов.
Базовое использование
use Zend\Form\Form; use Zend\Form\Element; // Within your view... $form = new Form(); // ...add elements and input filter to form... // Set attributes $form->setAttribute('action', $this->url('contact/process')); $form->setAttribute('method', 'post'); // Prepare the form elements $form->prepare(); // Render the opening tag echo $this->form()->openTag($form); // <form action="/contact/process" method="post"> // ...render the form elements... // Render the closing tag echo $this->form()->closeTag(); // </form>
Следующие публичные методы являются дополнением к унаследованным из Zend\Form\View\Helper\AbstractHelper.
openTag(FormInterface $form = null)
Отображает открывающийся тег <form> для экземпляра $form.
Тип возвращаемого значения: строка
closeTag()
Отображает закрывающий тег </form>.
Тип возвращаемого значения: строка
Помощник вида FormButton используется для отображение HTML элемента <button> и его атрибутов.
Базовое использование
use Zend\Form\Element; $element = new Element\Button('my-button'); $element->setLabel("Reset"); // Within your view... /** * Example #1: Render entire button in one shot... */ echo $this->formButton($element); // <button name="my-button" type="button">Reset</button> /** * Example #2: Render button in 3 steps */ // Render the opening tag echo $this->formButton()->openTag($element); // <button name="my-button" type="button"> echo '<span class="inner">' . $element->getLabel() . '</span>'; // Render the closing tag echo $this->formButton()->closeTag(); // </button> /** * Example #3: Override the element label */ echo $this->formButton()->render($element, 'My Content'); // <button name="my-button" type="button">My Content</button>
Следующие публичные методы являются дополнением к унаследованным из Zend\Form\View\Helper\FormInput.
openTag($element = null)
Отображает открывающийся тег < button> для экземпляра $element.
Тип возвращаемого значения: строка
closeTag()
Отображает закрывающий тег </ button>.
Тип возвращаемого значения: строка
render(ElementInterface $element[, $buttonContent = null])
Отображает открывающийся тег, содержимое и закрывающий тег.
Параметры:
$element – элемент кнопки
$buttonContent – необязательно. Содержание кнопки (надпись). Если установлено в NULL – используется значение «label», заданное для $element.
Тип возвращаемого значения: строка
Описание в разработке
Базовое использование
use Zend\Captcha; use Zend\Form\Element; $captcha = new Element\Captcha('captcha'); $captcha ->setCaptcha(new Captcha\Dumb()) ->setLabel('Please verify you are human'); // Within your view... echo $this->formCaptcha($captcha); // TODO
Помощник вида FormButton используется для отображение HTML элемента <input type="checkbox"> и его атрибутов. Подразумевается работа с элементом Zend\Form\Element\Checkbox, в котором находятся фильтры и валидаторы для значений «checkbox».
FormCheckbox расширяет Zend\Form\View\Helper\FormInput.
Базовое использование
use Zend\Form\Element; $element = new Element\Checkbox('my-checkbox'); // Within your view... /** * Example #1: Default options */ echo $this->formCheckbox($element); // <input type="hidden" name="my-checkbox" value="0"> // <input type="checkbox" name="my-checkbox" value="1"> /** * Example #2: Disable hidden element */ $element->setUseHiddenElement(false); echo $this->formCheckbox($element); // <input type="checkbox" name="my-checkbox" value="1"> /** * Example #3: Change checked/unchecked values */ $element->setUseHiddenElement(true) ->setUncheckedValue('no') ->setCheckedValue('yes'); echo $this->formCheckbox($element); // <input type="hidden" name="my-checkbox" value="no"> // <input type="checkbox" name="my-checkbox" value="yes">
Помощник вида FormElement – это прокси для рендеринга специальных помощников вида формы, зависящих от типа, переданного в Zend\Form\Element. Например, если переданный элемент имеет тип «text», то помощник FormElement вызовет и использует помощник FormText для отображения этого элемента.
Базовое использование
use ZendFormForm; use Zend\Form\Element; // Within your view... /** * Example #1: Render different types of form elements */ $textElement = new Element\Text('my-text'); $checkboxElement = new Element\Checkbox('my-checkbox'); echo $this->formElement($textElement); // <input type="text" name="my-text" value=""> echo $this->formElement($checkboxElement); // <input type="hidden" name="my-checkbox" value="0"> // <input type="checkbox" name="my-checkbox" value="1"> /** * Example #2: Loop through form elements and render them */ $form = new Form(); // ...add elements and input filter to form... $form->prepare(); // Render the opening tag echo $this->form()->openTag($form); // ...loop through and render the form elements... foreach ($form as $element) { echo $this->formElement($element); // <-- Magic! echo $this->formElementErrors($element); } // Render the closing tag echo $this->form()->closeTag();
Помощник вида FormElementErrors используется для отображения сообщений об ошибках при валидации элемента.
Базовое использование
use Zend\Form\Form; use Zend\Form\Element; use Zend\InputFilter\InputFilter; use Zend\InputFilter\Input; // Create a form $form = new Form(); $element = new Element\Text('my-text'); $form->add($element); // Create a input $input = new Input('my-text'); $input->setRequired(true); $inputFilter = new InputFilter(); $inputFilter->add($input); $form->setInputFilter($inputFilter); // Force a failure $form->setData(array()); // Empty data $form->isValid(); // Not valid // Within your view... /** * Example #1: Default options */ echo $this->formElementErrors($element); // <ul><li>Value is required and can't be empty</li></ul> /** * Example #2: Add attributes to open format */ echo $this->formElementErrors($element, array('class' => 'help-inline')); // <ul class="help-inline"><li>Value is required and can't be empty</li></ul> /** * Example #3: Custom format */ echo $this->formElementErrors() ->setMessageOpenFormat('<div class="help-inline">') ->setMessageSeparatorString('</div><div class="help-inline">') ->setMessageCloseString('</div>') ->render($element); // <div class="help-inline">Value is required and can't be empty</div>
Следующие публичные методы являются дополнением к унаследованным от Zend\Form\View\Helper\AbstractHelper.
setMessageOpenFormat(string $messageOpenFormat)
Устанавливает форматированную строку, использующуюся для открытия сообщения.
Параметры:
$messageOpenFormat – форматированная строка. По умолчанию используется «<ul%s><li>». Атрибуты добавляются тут.
getMessageOpenFormat()
Возвращает форматированную строку, используемую для открытия вывода ссобщения.
Тип возвращаемого значения: строка
setMessageSeparatorString(string $messageSeparatorString)
Задает строку – разделитель сообщений
Параметры:
$messageSeparatorString - строка разделитель. По умолчанию «</li><li>».
getMessageSeparatorString()
Возвращает строку – разделитель.
Тип возвращаемого значения: строка
setMessageCloseString(string $messageCloseString)
Задает строку, используемую при закрытии сообщения.
Параметры:
$messageCloseString - строка окончание. По умолчанию используется «</li></ul>»
getMessageCloseString()
Возвращает строку – окончание
Тип возвращаемого значения: строка
setAttributes(array $attributes)
Задает атрибуты, используемые при выводе сообщения.
Параметры:
$attributes - пары «ключ-значение» атрибутов.
getAttributes()
Получает атрибуты сообщения
Тип возвращаемого значения: массив
render(ElementInterface $element[, array $attributes = array()])
Отображает ошибки для заданного $element.
Параметры:
$element - элемент
$attributes - атрибуты
Тип возвращаемого значения: строка
FormHidden (Скрытый элемент)
Помощник вида FormHidden используется для отображения HTML поля «<input type="hidden">». Используется в паре с элементом Zend\Form\Element\Hidden.
FormHidden расширяет Zend\Form\View\Helper\FormInput.
Базовое использование
use Zend\Form\Element; $element = new Element\Hidden('my-hidden'); $element->setValue('foo'); // Within your view... echo $this->formHidden($element); // <input type="hidden" name="my-hidden" value="foo">
Помощник вида FormImage используется для отображения HTML поля «<input type=" image">». Используется в паре с элементом Zend\Form\Element\ Image.
FormImage расширяет Zend\Form\View\Helper\FormInput.
Базовое использование
use Zend\Form\Element; $element = new Element\Image('my-image'); $element->setAttribute('src', '/img/my-pic.png'); // Within your view... echo $this->formImage($element); // <input type="image" name="my-image" src="/img/my-pic.png">
Помощник вида FormInput используется для отображения HTML поля «<input>». Используется как базис для всех помощников, отображающих поля формы (FormText, FormCheckbox, FormSubmit и т.д.). Не рекомендуется прямое использование без необходимости.
Содержит общую карту валидных тегов, атрибутов и типов, использующихся в фильтрах. Каждый из под классов FormInput реализует свою собственную карту валидных атрибутов тегов.
Следующие публичные методы являются дополнением к унаследованным от Zend\Form\View\Helper\AbstractHelper.
render(ElementInterface $element)
Отображает тег <input> заданного $element.
Тип возвращаемого значения: строка
FormLabel (Этикетка, название)
Помощник вида FormLabel используется для отображения HTML поля «<label >» и атрибутов. Если Вы используете Zend\I18n\Translator\Translator , то он автоматически переведет значения FormLabel, если заданы переводы.
Базовое использование
use Zend\Form\Element; $element = new Element\Text('my-text'); $element->setLabel('Label') ->setAttribute('id', 'text-id') ->setLabelAttributes(array('class' => 'control-label')); // Within your view... /** * Example #1: Render label in one shot */ echo $this->formLabel($element); // <label class="control-label" for="text-id">Label</label> echo $this->formLabel($element, $this->formText($element)); // <label class="control-label" for="text-id">Label<input type="text" name="my-text"></label> echo $this->formLabel($element, $this->formText($element), 'append'); // <label class="control-label" for="text-id"><input type="text" name="my-text">Label</label> /** * Example #2: Render label in separate steps */ // Render the opening tag echo $this->formLabel()->openTag($element); // <label class="control-label" for="text-id"> // Render the closing tag echo $this->formLabel()->closeTag(); // </label>
Добавление переводчика
// Setting a translator $this->formLabel()->setTranslator($translator); // Setting a text domain $this->formLabel()->setTranslatorTextDomain('my-text-domain'); // Setting both $this->formLabel()->setTranslator($translator, 'my-text-domain');
Важно: Если Вы используете переводчик, и он объявлен в Service Manager с ключом «translator», то будет автоматически применяться для перевода FormLabel.
Следующие публичные методы являются дополнением к унаследованным от Zend\Form\View\Helper\AbstractHelper.
__invoke(ElementInterface $element = null, string $labelContent = null, string $position = null)
Отображает form label. Контент – не обязателен.
Параметры:
$element - элемент формы
$labelContent – если установлено в «NULL», то будет использоваться значение для «label».
FormLabel::APPEND или FormLabel::PREPEND (default)
Тип возвращаемого значения: строка
openTag(array|ElementInterface $attributesOrElement = null)
Отображает отрывающийся тег <label> и атрибуты.
Параметры:
$attributesOrElement - массив с парами ключ-значение для атрибутов. Или экземпляр ElementInterface.
Тип возвращаемого значения: строка
closeTag()
Отображает закрывающий тег </label>.
Тип возвращаемого значения: строка
Помощник вида FormMultiCheckbox используется для отображения HTML поля «<input type="checkbox">» и атрибутов. Работает в паре с элементом Zend\Form\Element\MultiCheckbox, где находятся необходимые фильтры и валидаторы.
FormMultiCheckbox расширяет Zend\Form\View\Helper\FormInput.
Базовое использование
use Zend\Form\Element; $element = new Element\MultiCheckbox('my-multicheckbox'); $element->setValueOptions(array( '0' => 'Apple', '1' => 'Orange', '2' => 'Lemon', )); // Within your view... /** * Example #1: using the default label placement */ echo $this->formMultiCheckbox($element); // <label><input type="checkbox" name="my-multicheckbox[]" value="0">Apple</label> // <label><input type="checkbox" name="my-multicheckbox[]" value="1">Orange</label> // <label><input type="checkbox" name="my-multicheckbox[]" value="2">Lemon</label> /** * Example #2: using the prepend label placement */ echo $this->formMultiCheckbox($element, 'prepend'); // <label>Apple<input type="checkbox" name="my-multicheckbox[]" value="0"></label> // <label>Orange<input type="checkbox" name="my-multicheckbox[]" value="1"></label> // <label>Lemon<input type="checkbox" name="my-multicheckbox[]" value="2"></label>
Помощник вида FormRadio используется для отображения HTML поля «<input type=" radio ">» и атрибутов. Работает в паре с элементом Zend\Form\Element\Radio, где находятся необходимые фильтры и валидаторы.
FormRadio расширяет Zend\Form\View\Helper\FormInput.
Базовое использование
use Zend\Form\Element; $element = new Element\Radio('gender'); $element->setValueOptions(array( '0' => 'Male', '1' => 'Female', )); // Within your view... /** * Example #1: using the default label placement */ echo $this->formRadio($element); // <label><input type="radio" name="gender[]" value="0">Male</label> // <label><input type="radio" name="gender[]" value="1">Female</label> /** * Example #2: using the prepend label placement */ echo $this->formRadio($element, 'prepend'); // <label>Male<input type="checkbox" name="gender[]" value="0"></label> // <label>Female<input type="checkbox" name="gender[]" value="1"></label>
Помощник вида FormSelect используется для отображения HTML поля «<input type=" select">» и атрибутов. Работает в паре с элементом Zend\Form\Element\ Select, где находятся необходимые фильтры и валидаторы.
FormSelect расширяет Zend\Form\View\Helper\FormInput.
Базовое использование
use Zend\Form\Element; $element = new Element\Select('language'); $element->setValueOptions(array( '0' => 'French', '1' => 'English', '2' => 'Japanese', '3' => 'Chinese' )); // Within your view... /** * Example */ echo $this->formSelect($element);
AbstractHelper используется как базовый абстрактный класс для помощников вида форм. Предоставляет методы для валидации HTML атрибутов, а так же контроль doctype и кодировки. AbstractHelper так же расширяет Zend\I18n\View\Helper\AbstractTranslatorHelper, который в свою очередь обеспечивает поддержку Zend\I18n\Translator\TranslatorAwareInterface.
Следующие публичные методы являются дополнением к унаследованным из Zend\I18n\View\Helper\AbstractTranslatorHelper.
setDoctype(string $doctype)
Задает doctype, используемый в помощнике.
getDoctype()
Получает doctype, используемый в помощнике.
Тип возвращаемого значения: строка
setEncoding(string $encoding)
Задает текст перевод домена, использующийся для перевода в помощнике.
getEncoding()
Возвращает кодировку текста, используемую в помощнике.
Тип возвращаемого значения: строка
getId()
Возвращает ID элемента. Если атрибут ID не задан, то пытается получить имя атрибута. Если и его нету – возвращает «NULL».
Тип возвращаемого значения: строка или NULL
Помощник вида FormColor используется для отображения HTML поля «<input type="color ">» и атрибутов. Работает в паре с элементом Zend\Form\Element\ Color, где находятся необходимые фильтры и валидаторы.
FormColor расширяет Zend\Form\View\Helper\FormInput.
Базовое использование
use Zend\Form\Element; $element = new Element\Color('my-color'); // Within your view... echo $this->formColor($element); // <input type="color" name="my-color" value="">
Помощник вида FormDate используется для отображения HTML поля «<input type=" date ">» и атрибутов. Работает в паре с элементом Zend\Form\Element\ Date, где находятся необходимые фильтры и валидаторы.
FormDate расширяет Zend\Form\View\Helper\FormInput.
Базовое использование
use Zend\Form\Element; $element = new ElementDate('my-date'); // Within your view... echo $this->formDate($element); // <input type="date" name="my-date" value="">
Помощник вида FormDateTime используется для отображения HTML поля «<input type=" datetime">» и атрибутов. Работает в паре с элементом Zend\Form\Element\ DateTime, где находятся необходимые фильтры и валидаторы.
FormDateTime расширяет Zend\Form\View\Helper\FormInput.
Базовое использование
use Zend\Form\Element; $element = new ElementDateTime('my-datetime'); // Within your view... echo $this->formDateTime($element); // <input type="datetime" name="my-datetime" value="">
Помощник вида FormDateTimeLocal используется для отображения HTML поля «<input type="datetime-local">» и атрибутов. Работает в паре с элементом Zend\Form\Element\ DateTimeLocal, где находятся необходимые фильтры и валидаторы.
FormDateTimeLocal расширяет Zend\Form\View\Helper\FormInput.
Базовое использование
use Zend\Form\Element; $element = new ElementDateTimeLocal('my-datetime'); // Within your view... echo $this->formDateTimeLocal($element); // <input type="datetime-local" name="my-datetime" value="">
Помощник вида FormEmail используется для отображения HTML поля «<input type=" email">» и атрибутов. Работает в паре с элементом Zend\Form\Element\ Email, где находятся необходимые фильтры и валидаторы.
FormEmail расширяет Zend\Form\View\Helper\FormInput.
Базовое использование
use Zend\Form\Element; $element = new ElementEmail('my-email'); // Within your view... echo $this->formEmail($element); // <input type="email" name="my-email" value="">
Помощник вида FormMonth используется для отображения HTML поля «<input type=" month">» и атрибутов. Работает в паре с элементом Zend\Form\Element\Month, где находятся необходимые фильтры и валидаторы.
FormMonth расширяет Zend\Form\View\Helper\FormInput.
Базовое использование
use Zend\Form\Element; $element = new ElementMonth('my-month'); // Within your view... echo $this->formMonth($element); // <input type="month" name="my-month" value="">
Помощник вида FormTime используется для отображения HTML поля «<input type=" time">» и атрибутов. Работает в паре с элементом Zend\Form\Element\Time, где находятся необходимые фильтры и валидаторы.
FormTime расширяет Zend\Form\View\Helper\FormInput.
Базовоеи спользование
use Zend\Form\Element; $element = new ElementTime('my-time'); // Within your view... echo $this->formTime($element); // <input type="time" name="my-time" value="">