Yii2 behaviors. Часть 1

Yii2 behaviors

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

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

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

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

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

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

Yii2 behaviors

Затем CRUD:

Yii2 behaviors

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

Yii2 behaviors

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

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

Yii2 behaviors

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

Yii2 behaviors

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

Yii2 behaviors

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

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

Метки:

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

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