Разьясните как пользоваться afterSave() и beforeSave()

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Vadim7423
Сообщения: 59
Зарегистрирован: 2016.07.07, 20:21

Разьясните как пользоваться afterSave() и beforeSave()

Сообщение Vadim7423 »

Здравствуйте. Есть модель Letters и есть контроллер LettersController
В контроллере прописаны методы по добавлению данных в таблицу логов и промежуточную таблицу. В промежуточную таблицу данные должны добавляться перед выполнением метода $model->save(), а в таблицу логов после.
Дабы не изобретать велосипед, подскажите как правильно сделать?
Метод create контроллера LettersController

Код: Выделить всё

public function actionCreate($direction = null, $level = null)
    {
        $model = new Letters();
        if(!isset($direction) || !isset($level)){
             throw new \yii\web\HttpException(404, 'Такой страницы нет');
        }
        $title = 'Добавить корреспонденцию (' . $this->categoryName($direction, $level) . ')';
        
        $users = $this->getUsers();
           
        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            Yii::$app->session->setFlash('success', "Корреспонденция добавлена");
            return $this->redirect(['view', 'id' => $model->id]);
        }

        return $this->render('create', [
            'model' => $model,
            'title' => $title,
            'users' => $users,
        ]);
    }
Как вызвать допустим метод beforeSave() в контроллере и выполнить в нем другие методы этого контроллера по добавлению данных в другие таблицы?
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: Разьясните как пользоваться afterSave() и beforeSave()

Сообщение urichalex »

Код: Выделить всё

$model->on(ActiveRecord::EVENT_BEFORE_SAVE, function($event) {
	$model = $event->sender;
})
Ответить