#events #laravel #laravel-4 #listeners #handlers
#Мероприятия #laravel #laravel-4 #прослушиватели #обработчики
Вопрос:
У меня есть вопрос о обработчиках событий и слушателях Laravel. Я понятия не имею, с чего начать.
Я хотел бы знать, что именно представляют собой события и когда их использовать. Также я хотел бы знать, каков наилучший способ организации событий и прослушивателей и где их разместить (в какой папке).
Любая помощь была бы оценена 😉
Ответ №1:
Недавно я внедрил канал для действий, например, когда создается запись, регистрируется новый пользователь или что-то еще. Каждое действие запускает событие, и для каждого события есть прослушиватель, который сохраняет что-то вроде «Пользователь XY только что зарегистрирован!» в базе данных.
Самая базовая версия:
// app/controllers/RegistrationController.php
class RegistrationController {
public function register($name) {
User::create([
'name' => $name
});
Event::fire('user.registered', [$name]);
}
}
// app/events.php
Event::listen('user.registered', function($name) {
DB::table('feed')->insert(
[
'action' => 'User ' . $name . ' just registered!'
// ...
}
);
});
Чтобы использовать events.php файл, добавьте следующую строку в свой app/start/global.php
require app_path().'/events.php';
Теперь вы можете поместить все события в events.php .
Но если у вас будет много событий, вам не следует помещать все ваши события в один файл. Смотрите подписчиков событий.
Комментарии:
1. Спасибо! именно то, что мне было нужно 🙂 Это упрощает тестирование моих контроллеров.
2. Привет, @Melvin Koopmans, я хочу запустить событие при входе пользователя в систему. Я использую laravel 5, встроенный в auth. Где я должен запустить событие?
3. Вы можете запустить событие в контроллере. Когда вы нажмете на конкретный метод контроллера, вы сможете определить запуск вашего события. Затем laravel автоматически запускает ваше событие для вас.