Как вызвать событие, которое срабатывает после обновления записи в базе данных?[OctoberCMS] - PullRequest
0 голосов
/ 28 сентября 2019

Я пытался вызвать событие, которое сообщает мне, была ли изменена конкретная информация в записи, однако мои данные не выполняются (не выдает ошибку как таковую, но не регистрирует ожидаемую информацию)

Iдобавил это в файл Plugin.php в функции загрузки

        $comment =  new ExpertsComment;
        $comment->bindEvent('model.afterUpdate', function () use (\October\Rain\Database\Model $model) {
            if ($model->is_approved !== $model->original['is_approved']) {
              Log::info("Event Fired!");
         }
        });

использовал это отсюда https://octobercms.com/docs/api/model/afterupdate

1 Ответ

1 голос
/ 29 сентября 2019

Является ли ExpertsComment вашим классом?Если это так, вы можете добавить событие непосредственно в вашу модель в plugins/foo/bar/models/ExpertsComment.php.Не забудьте добавить Log Facade, use Log; в ExpertsComment.php. Вот документы для базового использования модельного события.

public function afterUpdate() 
{
    if ($this->is_approved !== $this->original['is_approved']) {
        Log::info("Event Fired!");
    }
}

Или, если вы хотите расширить другой класс, вы можете сделать это в одном из ваших классов плагинов, то есть: plugins/foo/bar/Plugin.php, Вот документы для расширения класса.

use Foo\Bar\Models\ExpertsComment;

class Plugin extends PluginBase
{
    ....

    public function boot()
    {
        ExpertsComment::extend(function($model) {
            $model->bindEvent('model.afterUpdate', function() use ($model) {
                if ($model->is_approved !== $model->original['is_approved']) {
                    Log::info("Event Fired!");
                }
            });
        });
    }

    .... 
}
...