Laravel事件處理

事件是通過程序所識別並程序可進行處理的動作或發生。Laravel事件只是提供了一個觀察者的實現。事件可以通過以下步驟來處理 -

第1步 - 創建一個事件類。

事件類可以通過執行以下命令來創建。

php artisan make:event  

在這裏,應使用事件類的名稱來代替。創建的類將被存儲在 app\Events 目錄。

第2步 - 創建一個處理類來處理創建的事件。
Laravel事件處理

事件處理類可以通過執行以下命令來創建。

php artisan handler:event --event =  

在這裏,應使用我們在步驟1來代替應, 創建事件類的名稱使用處理程序類的名稱來取代。新創建的處理程序類將被存儲在app\Handlers\Events 目錄。

第3步 - 註冊事件類及其事件服務提供者類處理程序。

現在,我們需要註冊該事件在文件 - app\Providers\EventServiceProvier.php。 此文件包含一個數組:$listen。在這個數組,我們需要事件類添加作爲鍵以及事件處理程序類作爲它的值。

第4步 - 觸發事件。

最後一步是觸發使用事件門面觸發事伯。fire()方法由事件類的對象調用。事件可以觸發如下 -

Event::fire();

應使用事件類的對象來代替。

實例

第1步 - 通過執行以下命令來創建一個名爲CreateStudent 的控制器。

php artisan make:controller CreateStudentController

第2步 - 成功執行後,您會收到以下輸出 -
Laravel事件處理

第3步 - 複製下面的代碼到文件 - app/Http/Controllers/CreateStudentController.php

app/Http/Controllers/CreateStudentController.php

input('stud\_name'); $age = $request->input('stud\_age'); DB::insert('insert into student (name,age) values(?, ?)',\[$name, $age\]); echo "Record inserted successfully.
"; echo 'Click Here to go back.'; //firing an event Event::fire(new StudentAdded($name)); } } 第4步- 創建通過執行以下命令添加名爲 StudentAdded 的事件。 php artisan make:event StudentAdded 第5步 - 成功執行後,您會收到以下輸出 - ![Laravel事件處理](https://asset.1ju.org/cmsstatic/laravel-75.png) 第6步 - 上面的命令將在 App\\Events\\StudentAdded.php 文件創建事件。複製以下代碼到該文件中。 App\\Events\\StudentAdded.php name = $name; } public function broadcastOn() { return \[\]; } } 第9步 - 創建一個事件處理文件在 app\\Handlers\\Events\\HandleNewStudentAdded.php,複製以下代碼到該文件中。 app\\Handlers\\Events\\HandleNewStudentAdded.php name = $event->name; echo "
New Student added in database with name: ".$this->name; } }  第10步 - 現在,我們需要添加事件類和處理程序類存儲在文件 - app\\Providers\\EventServiceProvider.php app\\Providers\\EventServiceProvider.php \[ 'App\\Listeners\\EventListener', \], 'App\\Events\\StudentAdded' => \[ 'App\\Handlers\\Events\\HandleNewStudentAdded', \], \]; /\*\* \* Register any other events for your application. \* \* @param \\Illuminate\\Contracts\\Events\\Dispatcher $events \* @return void \*/ public function boot(DispatcherContract $events) { parent::boot($events); // } } 第11步- 添加以下行到文件 - app/Http/routes.php app/Http/routes.php Route::get('event','CreateStudentController@insertform'); Route::post('addstudent','CreateStudentController@insert'); 第12步 - 訪問以下網址測試活動。 https://asset.1ju.org/event 第13步 - 訪問上述網址後,您會收到以下輸出 - ![Laravel事件處理](https://asset.1ju.org/cmsstatic/laravel-76.png) 第14步 - 增加學生的姓名,然後點擊「添加學生」按鈕,將您重定向到下面的屏幕。看看灰色高亮行。 我們已經指定處理方法,在一個事件被觸發執行HandleNewStudentAdded類的處理方法時添加此行。 ![Laravel事件處理](https://asset.1ju.org/cmsstatic/laravel-77.png)