Yii2 ActiveForm. Часть 1

Yii2 ActiveForm

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

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

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

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

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

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

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

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

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

Yii2 ActiveForm

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

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

Yii2 ActiveForm

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

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

Yii2 ActiveForm

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

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

Метки:

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

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

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