Від автора: в Laravel події — це розпізнані програмою дії, які можуть оброблятися певним чином. Події Laravel просто забезпечують реалізацію обробника. Подія може оброблятися наступним чином.
Крок 1. Створіть клас Event. Клас Event можна створити, виконавши наступну команду.
php artisan make:event
Замініть на ім’я класу події. Створений клас буде збережено в папці app\Events.
Крок 2. Створіть класу обробника для обробки створеного події. Клас обробника події можна створити, виконавши наступну команду.
php artisan handler:event –event =
Замініть event-class на ім’я класу події, який ми створили в кроці 1, а клас handler-class замініть на ім’я класу обробника. Створений клас обробника буде збережений в app\Handlers\Events.
Крок 3 — Зареєструйте клас Event і його обробник у класі EventServiceProvider. Тепер нам потрібно зареєструвати подію і його класу обробника у файлі app\Providers\EventServiceProvier.php. Цей файл містить масив з ім’ям $listen. У цьому масиві нам потрібно додати клас події в якості ключа, а клас обробника події як його значення.
Крок 4 — Запуск події. Останній крок — запустити подія з допомогою допоміжного класу Event Facade. Для цього повинна викликатися функція fire(), яка приймає об’єкт класу event. Подія може бути запущено, як показано нижче:
Event::fire();
Замініть Event Class Object на ім’я об’єкта події.
Приклад
Крок 1. Створіть контролер з ім’ям CreateStudentController , виконавши наступну команду.
php artisan make:controller CreateStudentController –plain
Крок 2 — Після виконання цієї команди ви отримаєте наступний результат:
Крок 3 — Скопіювати в файл app/Http/Controllers/CreateStudentController.php наступний код.
input(‘stud_name’);
DB::insert(‘insert into student (name) values(?)’,[$name]);
echo “Record inserted successfully.
“;
echo ‘Click Here to go back.’;
// запуск події
Event::fire(new StudentAdded($name));
}
}
Крок 4 — Створіть подія з ім’ям StudentAdded, виконавши наступну команду.
php artisan make:event StudentAdded
Крок 5 — Після виконання цієї команди ви отримаєте наступний результат:
Крок 6 – Наведена вище команда створить подія у файлі App\Events\StudentAdded.php. Скопіюйте цей файл наступний код.
name = $name;
}
public function broadcastOn() {
return [];
}
}
Крок 7 — Створіть обробник події HandleNewStudentAdded, виконавши наступну команду.
php artisan handler:event HandlerNewStudentAdded –event = StudentAdded
Крок 8 — Після виконання цієї команди ви отримаєте наступний результат:
Крок 9 – Наведена вище команда створить обробник події у файлі app\Handlers\Events\HandleNewStudentAdded.php. Скопіюйте цей файл наступний код.
name = $event->name;
echo “
New Student added in database with name: “.$this->name;
}
}
Крок 10 — Тепер нам потрібно додати клас події в класу обробника цієї події у файлі app\Providers\EventServiceProvider.php. Зверніть увагу на виділену жирним шрифтом рядок і додайте її в файл.
[
‘App\Listeners\EventListener’,
],
‘App\Events\StudentAdded’ => [
‘App\Handlers\Events\HandleNewStudentAdded’,
],
];
/**
* Реєстрація інших подій для вашого застосування.
*
* @param \Illuminate\Contracts\Events\Dispatcher $events
* @return void
*/
public function boot(DispatcherContract $events) {
parent::boot($events);
//
}
}
Крок 11 — Додайте в файл app/Http/routes.php наступні рядки.
Route::get(‘event’,’CreateStudentController@insertform’);
Route::post(‘addstudent’,’CreateStudentController@insert’);
Крок 12 – Перейдіть за наступним URL-адресою, щоб перевірити подія. http://localhost:8000/event
Крок 13 — Ви повинні побачити на екрані наступне:
Крок 14 — Введіть ім’я студента і натисніть кнопку «Add student», ви будете перенаправлені на наступну сторінку. Зверніть увагу на рядок сірим кольором. Ми додали цю рядок метод обробника класу HandleNewStudentAdded, вона інформує про те, що при запуску події в методі обробника були виконані оператори.