Содержание


View Helpers


Помощники вида, Form, Формы, ЗФ2, Zend Framework 2, ZF2, ру, ru





Введение

 

В Zend Framework 2 есть набор помощников, разработанных специально для форм:  отображение текстовых полей, имен полей, выпадающих списков и т.д.

 

Стандартные помощники

 

Form (Форма)

 

Помощник вида 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 (Кнопка формы)

 

Помощник вида 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.

Тип  возвращаемого  значения: строка

 

FormCaptcha (Капча)

 

Описание в разработке

 

Базовое использование

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

FormCheckbox (Флажки)

 

Помощник вида 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 (Элемент)

 

Помощник вида 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

 

Помощник вида 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&#039;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&#039;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&#039;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 (Изображение)

 

Помощник вида 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

 

Помощник вида 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

 

Помощник вида 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 (Радио кнопка)

 

Помощник вида 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

 

Помощник вида 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

 

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

 

Помощники HTML5

 

FormColor (Цвет)

 

Помощник вида 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 (Дата)

 

Помощник вида 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

 

Помощник вида 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

 

Помощник вида 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 (электронная почта)

 

Помощник вида 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 (Месяц)

 

Помощник вида 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

 

Помощник вида 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="">


Автор статьи: DuB