Имеется самописная админка на Ларе. Работает она на двух контроллерах - AdminController и EntityController. Первый - системные страницы, вроде конфигурации, экспорта/импорта данных в БД и прочее. Второй - работа с сущностями, например, новости, каталог и подобное (список, редактирование, копирование, удаление, сохранение, etc).
Параметры каждой сущности хранятся в конфигурационном файле (это не важный момент).
Каким образом реализовать прослушивание событий, чтобы, например, при создании записи определенной сущности (например создание новой новости) отрабатывал определенный код (в контроллере отдельном?).
Идея такова - при создании новости нужно проверять имеется ли галочка "Кросспостинг" и при наличии оной необходимо передавать модель новости с заполненными полями в контроллер, например CrosspostController@social, где будут уже производится дополнительные манипуляции.
Буду благодарен за любую помощь.
Спасибо, господа.
Update:
Окей, с отлавливанием событий разобрался.
В модели News имеем следующий код:
public static function boot()
{
parent::boot();
static::creating(function($news)
{
dd('Create new item');
});
}
Как вынести код из static::creating(function($news) { ... }) в контроллер отдельный? Например, в CrosspostController@social.
Подойдет ли следующий вариант?
// App/Models/News
public static function boot()
{
parent::boot();
static::creating(function($news)
{
Event::fire('news.createcrosspost', array($news));
});
}
// App/Providers/EventServiceProvider
protected $listen = [
'news.createcrosspost' => [
'CrosspostController@social',
],
];