Рассмотрим часто использующийся на сайте виджет 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']);