Yii2 формы

Yii2 формы

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

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

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

namespace app\models;

use yii\base\Model;


class TestForm extends Model
{

}

Yii2 формы

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

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

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

Узнать подробнее
class TestForm extends Model
{
 
 public $name;
 public $email;
 
}

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

namespace app\controllers;

use yii\web\Controller;
use app\models\TestForm;

class TestController extends Controller
{

 public function actionIndex()
 {
 return $this->render('index');
 }

 public function actionPage()
 {
 $form_model = new TestForm();
 return $this->render('page', compact('form_model'));
 }

}

Yii2 формы

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

<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
?>
<?php $form = ActiveForm::begin() ?>
 <?= $form->field($form_model, 'name') ?>
 <?= $form->field($form_model, 'email') ?>
 <?= Html::submitButton('Send', ['class' => 'btn btn-success']) ?>
<?php ActiveForm::end() ?>

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

Yii2 формы

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

public function actionPage()
{
 $form_model = new TestForm();
 if($form_model->load(\Yii::$app->request->post())){
 var_dump(\Yii::$app->request->post());
 var_dump($form_model);
 }
 return $this->render('page', compact('form_model'));
}

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

Yii2 формы

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

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

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

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

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

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

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

Получить

Метки:

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

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

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

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

Ваш 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