Laravel — Обработка событий

Laravel — Обработка событий

От автора: в Laravel события — это распознанные программой действия, которые могут обрабатываться определенным образом. События Laravel просто обеспечивают реализацию обработчика. Событие может обрабатываться следующим образом.

Шаг 1. Создайте класс Event. Класс Event можно создать, выполнив следующую команду.

php artisan make:event <event-class>

Замените <event-class> на имя класса события. Созданный класс будет сохранен в папке app\Events.

Шаг 2. Создайте класс обработчика для обработки созданного события. Класс обработчика события можно создать, выполнив следующую команду.

php artisan handler:event <handler-class> --event = <event-class>

Замените event-class на имя класса события, который мы создали в шаге 1, а класс handler-class замените на имя класса обработчика. Созданный класс обработчика будет сохранен в app\Handlers\Events.

Фреймворк Laravel. Быстрая разработка с фреймворком №1

Узнай тонкости современной веб-разработки с помощью фреймворка Laravel

Узнать подробнее

Шаг 3 — Зарегистрируйте класс Event и его обработчик в классе EventServiceProvider. Теперь нам нужно зарегистрировать событие и его класс обработчика в файле app\Providers\EventServiceProvier.php. Этот файл содержит массив с именем $listen. В этом массиве нам нужно добавить класс события в качестве ключа, а класс обработчика события в качестве его значения.

Шаг 4 — Запуск события. Последний шаг — запустить событие с помощью вспомогательного класса Event Facade. Для этого должна вызываться функция fire(), которая принимает объект класса event. Событие может быть запущено, как показано ниже:

Event::fire(<Event Class Object>);

Замените Event Class Object на имя объекта события.

Пример

Шаг 1. Создайте контроллер с именем CreateStudentController , выполнив следующую команду.

php artisan make:controller CreateStudentController --plain

Шаг 2 — После выполнения данной команды вы получите следующий результат:

Laravel — Обработка событий

Шаг 3 — Скопируйте в файл app/Http/Controllers/CreateStudentController.php следующий код.

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Events\StudentAdded;
use Event;
 
class CreateStudentController extends Controller {
  public function insertform(){
 return view('stud_add');
  }
 
  public function insert(Request $request){
 $name = $request->input('stud_name');
 DB::insert('insert into student (name) values(?)',[$name]);
 echo "Record inserted successfully.<br/>";
 echo '<a href = "/event">Click Here</a> to go back.';
 
 // запуск события 
 Event::fire(new StudentAdded($name));
  }
}

Шаг 4 — Создайте событие с именем StudentAdded, выполнив следующую команду.

php artisan make:event StudentAdded

Шаг 5 — После выполнения данной команды вы получите следующий результат:

Фреймворк Laravel. Быстрая разработка с фреймворком №1

Узнай тонкости современной веб-разработки с помощью фреймворка Laravel

Узнать подробнее

Laravel — Обработка событий

Шаг 6 – Приведенная выше команда создаст событие в файле App\Events\StudentAdded.php. Скопируйте в этот файл следующий код.

<?php
namespace App\Events;
use App\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
 
class StudentAdded extends Event {
  use SerializesModels;
  public $name;
 
  public function __construct($name) {
 $this->name = $name;
  }
  public function broadcastOn() {
 return [];
  }
}

Шаг 7 — Создайте обработчик события HandleNewStudentAdded, выполнив следующую команду.

php artisan handler:event HandlerNewStudentAdded --event = StudentAdded

Шаг 8 — После выполнения данной команды вы получите следующий результат:

Laravel — Обработка событий

Шаг 9 – Приведенная выше команда создаст обработчик события в файле app\Handlers\Events\HandleNewStudentAdded.php. Скопируйте в этот файл следующий код.

<?php
namespace App\Handlers\Events;
use App\Events\StudentAdded;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
 
class HandleNewStudentAdded {
  protected $name;
 
  public function __construct() {
 //
  }
  public function handle(StudentAdded $event) {
 $this->name = $event->name;
 echo "<br>New Student added in database with name: ".$this->name;
  }
}

Шаг 10 — Теперь нам нужно добавить класс события в класс обработчика этого события в файле app\Providers\EventServiceProvider.php. Обратите внимание на выделенную жирным шрифтом строку и добавьте ее в файл.

<?php
namespace App\Providers;
use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
 
class EventServiceProvider extends ServiceProvider {
  /**
  * размещение обработчика событий для приложения 
  *
  *  массив @var */
  protected $listen = [
 'App\Events\SomeEvent' => [
 '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 — Вы должны увидеть на экране следующее:

Laravel — Обработка событий

Шаг 14 — Введите имя студента и нажмите кнопку «Add student», вы будете перенаправлены на следующую страницу. Обратите внимание на строку выделенную серым цветом. Мы добавили эту строку в метод обработчика класса HandleNewStudentAdded, она информирует о том, что при запуске события в методе обработчика были выполнены операторы.

Laravel — Обработка событий

Источник: https://www.tutorialspoint.com/

Редакция: Команда webformyself.

Фреймворк Laravel. Быстрая разработка с фреймворком №1

Узнай тонкости современной веб-разработки с помощью фреймворка Laravel

Узнать подробнее
Самые свежие новости IT и веб-разработки на нашем Telegram-канале

Фреймворк Laravel. Быстрая разработка с фреймворком №1

Узнай тонкости современной веб-разработки с помощью фреймворка Laravel

Научиться

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree