Yii2 beforeSave

471

Від автора: вітаю вас, друзі. Ми продовжуємо цикл статей, присвячених знайомству з фреймворком Yii2. У цій статті ми познайомимося з ще одним методом, який спрацьовує в момент збереження даних — метод Yii2 beforeSave. Також ми дізнаємося, як відрізнити збереження нового запису (isnewrecord) від оновлень колишньою.

У попередній статті ми з вами познайомилися з методом afterSave. Даний метод викликається відразу після виклику методу save, тобто сразы після збереження даних у БД. Також ми дізналися, як відрізнити створення нового запису (isNewRecord) від редагування вже наявної.

У даній статті ми розглянемо метод, який працює точно за тією ж схемою з тією лише різницею, що він викликається до збереження даних. Тому дана стаття буде досить невеликий, оскільки принцип роботу обох методів — ідентичний. Де може знадобитися метод beforeSave? У минулій статті ми розглянули класичне застосування методу afterSave: якщо запис збережено — можна повідомити про це користувача. Це ми і реалізували за допомогою сесійних повідомлень і afterSave. У випадку з beforeSave ми, наприклад, можемо захотіти викликати додатково якийсь метод, який зробить необхідні нам дії.

Отже, давайте ми виключно в цілях тестування щось запишемо в сесійне повідомлення так, як це робилося і у випадку з afterSave:

public function beforeSave($insert)
{
if (parent::beforeSave($insert)) {
if ($insert) {
Yii::$app->session->setFlash(‘success’, ‘Запис добавлена!’);
} else {
Yii::$app->session->setFlash(‘success’, ‘Запис оновлено!’);
}
return true;
} else {
return false;
}
}

Yii2 beforeSave

Зверніть увагу на формат запису використовуваного методу. На відміну від afterSave, beforeSave повинен обов’язково повертати результат роботи реалізованого батьківського методу. В іншому випадку метод save працювати не буде.

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