Laravel — Обробка подій

18

Від автора: в 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 — Після виконання цієї команди ви отримаєте наступний результат:

Laravel — Обробка подій

Крок 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 — Після виконання цієї команди ви отримаєте наступний результат:

Laravel — Обробка подій

Крок 6 – Наведена вище команда створить подія у файлі App\Events\StudentAdded.php. Скопіюйте цей файл наступний код.

name = $name;
}
public function broadcastOn() {
return [];
}
}

Крок 7 — Створіть обробник події HandleNewStudentAdded, виконавши наступну команду.

php artisan handler:event HandlerNewStudentAdded —event = StudentAdded

Крок 8 — Після виконання цієї команди ви отримаєте наступний результат:

Laravel — Обробка подій

Крок 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’,’[email protected]’);
Route::post(‘addstudent’,’[email protected]’);

Крок 12 – Перейдіть за наступним URL-адресою, щоб перевірити подія. http://localhost:8000/event

Крок 13 — Ви повинні побачити на екрані наступне:

Laravel — Обробка подій

Крок 14 — Введіть ім’я студента і натисніть кнопку «Add student», ви будете перенаправлені на наступну сторінку. Зверніть увагу на рядок сірим кольором. Ми додали цю рядок метод обробника класу HandleNewStudentAdded, вона інформує про те, що при запуску події в методі обробника були виконані оператори.

Laravel — Обробка подій