Виджет ActiveForm в Yii 2.x. Поля и формы.

Рассмотрим часто использующийся на сайте виджет ActiveForm. Виджет включает в себя html форму с полями ввода, кнопками, списками выбора, чекбоксами, радио кнопками. Для подключения виджета на сайт используем следующие классы:

// подключаем помощник html разметки
use yii\helpers\Html; // подключаем виджет для работы с формами. use yii\bootstrap\ActiveForm (стилизованная версия под bootstrap 3)
use yii\widgets\ActiveForm;
// виджет капчи
use yii\captcha\Captcha;

Инициализация формы

$form = ActiveForm::begin([
   // идентификатор формы
'id' => 'contact-form', 'options' => [ // класс формы
'class' => 'form-horizontal', // возможность загрузки файлов
'enctype' => 'multipart/form-data' ], ]) /* Сюда добавляем поля формы */ ActiveForm::end();

Текстовое поле

//просто текстовое поле
echo $form->field($model,'name'); //текстовое поле с подсказкой и описанием
echo $form->field($model, 'name')->textInput()->hint('Введите свое имя')->label('Имя');

Текстовое поле для ввода электронного адреса

echo  $form->field($model, 'email')->input('email');
// поле с подсказкой и описанием
echo  $form->field($model, 'email')->input('email')->hint('Введите электронный адрес')->label('Электронный адрес');

Текстовое поле для ввода пароля

//вариант 1 
echo $form->field($model, 'password')->passwordInput(); 
// вариант 2
echo $form->field($model, 'password')->input('password'); 
//вариант 3 с подсказкой и описанием
echo $form->field($model, 'password')->passwordInput()->hint('Пароль должен содержать латинские символы и буквы')->label('Введите пароль');

Многострочное текстовое поле

echo $form->field($model, 'description')->textarea(); 
// тестовое поле с описанием
echo $form->field($model, 'description')->textarea()->label('Описание'); 
// тестовое поле определенного размера с описанием
echo $form->field($model, 'desc')->textarea(['rows'=>4,'cols'=>10])->label('Описание'); 

Загрузка одного файла

echo $form->field($model, 'uploadFile')->fileInput();

Загрузка нескольких файлов

echo $form->field($model, 'filesUpload[]')->fileInput(['multiple' => 'multiple']);

Одиночный чекбокс

//одиночный чекбокс с описанием по умолчанию
echo $form->field($model, 'countries')->checkbox(); 
//одиночный чекбокс без описание
echo $form->field($model, 'countries')->checkbox([label'=>'']); 
// одиночный чекбоск с описанием
echo $form->field($model, 'countries')	->checkbox(['label=>''])->label('Россия'); ?>
// неактивный одиночный стилизованный чекбокс
echo $form->field($model, 'countries')->checkbox([
								'label'=>'',
								'labelOptions'=>array('style'=>'padding:5px;'),
								'disabled'=>true								
								])->label('Россия'); ?>

Группа чекбоксов

echo $form->field($model, 'name[]')->checkboxList(['1' => 'Россия', '2' => 'Германия', '3' => 'США']

Одиночная радио кнопка

//одиночная радиокнопка с описанием по умолчанию
echo $form->field($model, 'countries')->radio(); 
//одиночная радиокнопка без описание
echo $form->field($model, 'countries')->radio([label'=>'']); 
//одиночная радиокнопка с описанием
echo $form->field($model, 'countries')->radio(['label'=>''])->label('Россия'); ?>
// неактивный одиночная стилизованный радиокнопка
echo $form->field($model, 'countries')->radio([
								'label'=>'',
								'labelOptions'=>array('style'=>'padding:5px;'),
								'disabled'=>true								
								])->label('Россия'); ?>

Группа радиокнопок

echo $form->field($model, 'name[]')->radioList(['1' => 'Россия', '2' => 'Германия', '3' => 'США']);

Список с возможностью выбора нескольких вариантов

$form->field($model, 'population')-> listBox(
			[ ['1' => 'Россия', '2' => 'Германия', '3' => 'США'],
			['multiple' => true, 'prompt' => 'Выберите одну или несколько стран'] ]
			->label('Страны');

Выпадающий список

// вариант 1
echo $form->field($model, 'name')->dropDownList(['1' => 'Россия', '2' => 'Германия', '3' => 'США']); 
// вариант 2
$listOfCountry = ['1' => 'Россия', '2' => 'Германия', '3' => 'США'];
echo $form->field($model, 'name')->dropDownList($listOfCountry, ['prompt'=>'Выберите страну']);

Капча

echo $form->field($model, 'verifyCode')->widget(Captcha::className(), [
            'captchaAction' => '/index/captcha',
            'template' => '{image}{input}',
        ]);

Кнопка сохранения формы

Html::submitButton('Сохранить', ['class' => 'btn btn-primary']);