Laravel事件處理
事件是通過程序所識別並程序可進行處理的動作或發生。Laravel事件只是提供了一個觀察者的實現。事件可以通過以下步驟來處理 -
第1步 - 創建一個事件類。
事件類可以通過執行以下命令來創建。
php artisan make:event
在這裏,
第2步 - 創建一個處理類來處理創建的事件。
事件處理類可以通過執行以下命令來創建。
php artisan handler:event
在這裏,
第3步 - 註冊事件類及其事件服務提供者類處理程序。
現在,我們需要註冊該事件在文件 - app\Providers\EventServiceProvier.php。 此文件包含一個數組:$listen。在這個數組,我們需要事件類添加作爲鍵以及事件處理程序類作爲它的值。
第4步 - 觸發事件。
最後一步是觸發使用事件門面觸發事伯。fire()方法由事件類的對象調用。事件可以觸發如下 -
Event::fire(
實例
第1步 - 通過執行以下命令來創建一個名爲CreateStudent 的控制器。
php artisan make:controller CreateStudentController
第2步 - 成功執行後,您會收到以下輸出 -
第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)