Yii2 формы

Yii2 формы

От автора: приветствую вас, друзья. Мы продолжаем цикл статей, посвященных знакомству с фреймворком Yii2. Эту статью мы посвятим теме Yii2 формы. Мы узнаем о том, как происходит создание форм, что такое модель формы, и как происходит ajax отправка формы. Начнем.

Итак, перед нами стоит стандартная задача — принять данные от пользователя. Обычно для этого используются формы и метод передачи данных POST. Что нам потребуется для создания формы? Во-первых, нам необходима модель формы. Далее, потребуется action, который будет отвечать за получение данных. Ну и, конечно же, нам необходим как минимум один вид, в котором и будет выведена форма.

Начнем с создания модели. В папке моделей создадим класс TestForm.

Yii2 формы

Модель наследует класс yii\base\Model, именно он, как правило, используется для работы с формами. В модели мы должны объявить публичные свойства, которые будут соответствовать полям формы. Например, пусть это будет форма с полями для ввода имени и email. Соответственно, объявим оба публичных свойства:

Пока что отложим модель и создадим action для работы со страницей формы и данными из нее. Я воспользуюсь созданным ранее контроллером TestController и его действием actionPage. В этом действии создадим экземпляр модели и передадим его в представление.

Yii2 формы

Осталось в виде \views\test\page.php отрисовать форму. Для этого мы воспользуемся возможностями виджета yii\widgets\ActiveForm и хэлпером yii\helpers\Html.

Теперь обратимся к нужной нам странице, указав имя контроллера и действия: //yii2/index.php?r=test/page. В результате мы должны увидеть нашу форму.

Yii2 формы

Отлично! Полдела сделано. Теперь задача состоит в том, чтобы принять данные из формы. По умолчанию она будет отправлена в это же действие, т.е. TestController::actionPage — там и попробуем принять данные. Для получения данных методом POST мы воспользуемся методом post() класса yii\web\Request. Попробуем загрузить полученные данные в модель с помощью метода load() в действии. Для этого немного изменим код действия:

Здесь мы пытаемся загрузить данные в модель и затем распечатать ее. Также мы дополнительно распечатываем сами данные из массива $_POST. Давайте попробуем отправить тестовые данные и взглянем на то, что будет распечатано.

Yii2 формы

В результате мы увидели, что данные приходят, но вот модель почему-то ими не заполняется, свойства name и email модели оказываются пустыми. Все правильно. Дело в том, что в модель могут быть загружены только проверенные данные, которые прошли валидацию. Для этого в модели нам потребуется создать массив правил валидации. Об этом мы и поговорим в следующей статье. Ну а на этом мы пока что остановимся.

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

Метки:

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

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