Yii2 ActiveForm. Часть 1

Yii2 ActiveForm

От автора: приветствую вас, друзья. Мы продолжаем цикл статей, посвященных знакомству с фреймворком Yii2. В этой и следующих статьях мы подробнее рассмотрим работу с виджетом Yii2 ActiveForm. В частности, мы узнаем о различных методах, позволяющих отрисовать форму и ее поля – это методы begin, field, checkbox и другие.

Как вы помните, с формами мы уже работали в предыдущих статьях: создавали свою форму, принимали из нее данные, добавляли форму в модальное окно и т.д. Напомню, что для создания формы нам потребуются следующие вещи: модель формы, action контроллера, который будет передавать эту модель в представление и принимать данные формы, ну и само представление, в котором форма будет отрисована.

Для показа формы используется виджет yii\widgets\ActiveForm. Также часто для работы с дополнительными элементами формы (например, кнопка отправки формы) используется хэлпер yii\helpers\Html. В данной статье нас в первую очередь интересуют методы виджета ActiveForm, с которыми мы и будем работать.

Для работы давайте создадим форму авторизации, в которой будет поле для ввода логина типа text, поле для ввода пароля типа password и поле типа checkbox для запоминания авторизованного пользователя. К слову, полноценный пример создания такой формы в Yii2 уже есть из коробки сразу после установки. Мы создадим свой, немного упрощенный пример.

Давайте создадим модель формы – TestForm:

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее
<?php

namespace app\models;

use yii\base\Model;

class TestForm extends Model
{
 public $username;
 public $password;
 public $rememberMe = true;

 
 public function rules()
 {
 return [
 [['username', 'password'], 'required'],
 ['rememberMe', 'boolean'],
 ];
 }
}

В ней мы объявили в виде свойств модели будущие поля. Также прописали правила валидации, в которых поля username и password являются обязательными, а поле rememberMe может принимать только булево значение, т.е. отвечает за переключатель (чекбокс).

Теперь получим объект класса в действии контроллера – SiteController::actionTest.

public function actionTest(){
 $model = new TestForm();
 return $this->render('test', compact('model'));
}

Ну и, наконец, создадим вид test в папке контроллера views\site.

<?php

use yii\helpers\Html;
use yii\bootstrap\ActiveForm;

var_dump($model);

В виде мы пока что в целях тестирования распечатали объект модели и, соответственно, увидим его свойства на экране при обращении к странице.

Yii2 ActiveForm

Хорошо, модель доступна и теперь мы готовы к выводу самой формы. Для этого мы должны воспользоваться для начала парой ключевых методов класса ActiveForm – это методы begin и end, которые указывают на начало и конец формы. Весь код между ними, соответственно, будет генерировать уже поля формы. Также метод begin создаст экземпляр формы, который мы используем для создания полей.

<?php $form = ActiveForm::begin(); ?>

<?php ActiveForm::end(); ?>

Если теперь обновить страницу в браузере и посмотреть ее исходный код, то в нем мы должны обнаружить код пустой пока что формы.

Yii2 ActiveForm

Как видим, форма имеет несколько атрибутов по умолчанию, которые нам могут быть интересны: id, action, method. Значения этих и других атрибутов можно изменить, передав массив параметров в метод begin. Давайте попробуем:

<?php $form = ActiveForm::begin([
 'id' => 'test-form',
 'action' => '/site/login',
 'options' => [
 'class' => 'form-inline',
 'enctype' => 'multipart/form-data'
 ]
]); ?>

Итак, мы переопределили идентификатор формы и ее action. Также дополнительно в массиве options передали дополнительные настройки формы: класс и атрибут enctype, который позволит передавать через форму файлы при необходимости. Такой необходимости у нас сейчас нет, и данный атрибут я указал просто для примера. К слову, в последних версиях фреймворка данный атрибут вовсе не обязателен, Yii сам поставит его, если в форме будет поле для загрузки файла. В результате мы получим примерно такую картину:

Yii2 ActiveForm

Точно таким же образом мы при необходимости можем изменить и метод передачи данных с post на get, передав его параметром массива в метод begin. В следующей статье мы продолжим знакомство с методами ActiveForm, создавая необходимые нам поля. Ну а пока все.

Больше о фреймворке вы можете узнать из наших бесплатных или платных уроков. Также создание простейшего блога на Yii2 можно посмотреть в этом цикле уроков.

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее
Самые свежие новости IT и веб-разработки на нашем Telegram-канале

Фреймворк YII2: теория и первая практика

Овладейте азами фреймворка Yii2 за 5 дней!

Получить

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Комментарии (1)

  1. Виктор

    Спасибо за лекции!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree