Yii2 behaviors. Часть 1

Yii2 behaviors

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

Частенько мы сталкиваемся с тем, что нам необходимо использовать похожий или даже один и тот же код в различных классах (controller). Соответственно, коль этот код одинаков, то не хотелось бы заниматься копипастом из одного класса в другой, хотелось бы вынести его и внедрять в наш код, тем самым избегая дублирования.

Для решения задачи Yii предлагает нам механизм поведений (behaviors). Поведения – это фактически функционал, который позволит нам использовать некоторый код в наших классах.

Классическая задача, которая уже реализована встроенным поведением во фреймворке. К примеру, при создании или обновлении статьи (страницы, товара и т.п.) мы хотели бы записывать или обновлять дату для искомого материала. Это удобно реализуется поведением TimestampBehavior, работу с которым мы сейчас и рассмотрим.

Для дальнейшей работы давайте создадим таблицу новостей с минимальным набором полей, среди которых нас в первую очередь интересуют поля created_at и updated_at – именно в них будут храниться метки добавления и обновления новостей.

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

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

Узнать подробнее
CREATE TABLE IF NOT EXISTS `news` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `created_at` datetime NOT NULL,
  `updated_at` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Теперь откроем генератор кода Gii и сгенерируем необходимые компоненты – модель:

Yii2 behaviors

Затем CRUD:

Yii2 behaviors

После этого перейдем по адресу http://yii2/news и добавим новость.

Yii2 behaviors

Здесь мы видим, кроме поля для наименования новости, еще и поля ее даты и обновления. Мне такой вариант не очень нравится, мне кажется неудобным постоянно заполнять эти поля. Хотелось бы, чтобы они заполнялись автоматически. Давайте попробуем реализовать это. Для начала откроем сгенерированную фреймворком модель News и сделаем данные поля необязательными. В итоге метод rules будет таким:

public function rules()
{
 return [
 [['title'], 'required'],
 [['created_at', 'updated_at'], 'safe'],
 [['title'], 'string', 'max' => 255],
 ];
}

Теперь откроем часть представления news\_form.php и уберем из формы или закомментируем вывод указанных полей.

Yii2 behaviors

После этого в форме останется только одно поле.

Yii2 behaviors

Отлично! Попробуем добавить новость.

Yii2 behaviors

Супер, новость добавлена! Однако в качестве даты и времени мы видим то, что принято называть dummy date. Как бы записать в эти поля реальные дату и время? Это мы с вами узнаем в следующей статье.

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

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

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

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

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

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

Научиться

Метки:

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

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

Комментарии 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