От автора: приветствую вас, друзья. Мы продолжаем цикл статей, посвященных знакомству с фреймворком Yii2. В этой статье мы продолжим знакомиться с темой поведений фреймворка — Yii2 behaviors, благодаря которым мы можем расширять функциональность нашего кода.
Итак, в предыдущей статье мы реализовали добавление новостей. Каждая новость по задумке должна содержать поле, в которое записывается дата и время добавления новости. При этом эти данные должны записываться без нашего участия, автоматически.
Для реализации нам всего-то достаточно добавить в модель поведение и указать необходимые настройки, примерно так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
use yii\behaviors\TimestampBehavior; use yii\db\ActiveRecord; use yii\db\Expression; public function behaviors(){ return [ [ 'class' => TimestampBehavior::className(), 'attributes' => [ ActiveRecord::EVENT_BEFORE_INSERT => ['created_at', 'updated_at'], ActiveRecord::EVENT_BEFORE_UPDATE => ['updated_at'], ], // если вместо метки времени UNIX используется datetime: 'value' => new Expression('NOW()'), ], ]; } |
Давайте протестируем работу добавленного поведения, а затем пройдемся по его коду. Итак, добавим еще одну новость.
Отлично! В поля created_at и updated_at были автоматически записаны дата и время добавления новости. Теперь проверим работу обновления, изменив название новости.
Тоже все верно – при обновлении изменилось только значение поля updated_at. Теперь вернемся к коду поведения. Итак, поведение TimestampBehavior предлагается нам самим фреймворком. Собственно, этот класс мы и указали в качестве источника поведения. В качестве атрибутов мы указали, что перед добавлением записи поведение сгенерирует данные для полей created_at и updated_at. Ну а перед событием UPDATE (обновлением) – обновим значение поля updated_at. Также в качестве значения будет записан «человеческий» формат даты (по умолчанию это метка времени).
Собственно, все. Как видите, использовать готовые поведения фреймворка достаточно просто и удобно.
Больше о фреймворке вы можете узнать из наших бесплатных или платных уроков. Также создание простейшего блога на Yii2 можно посмотреть в этом цикле уроков.