php artisan make:event <event-class>
在这里,<event-class>应使用事件类的名称来代替。创建的类将被存储在 app\events 目录。
php artisan handler:event <handler-class> --event = <event-class>
在这里,<event-class>应使用我们在步骤1来代替应,<handler-class> 创建事件类的名称使用处理程序类的名称来取代。新创建的处理程序类将被存储在app\handlers\events 目录。
现在,我们需要注册该事件在文件 - app\providers\eventserviceprovier.php。 此文件包含一个数组:$listen。在这个数组,我们需要事件类添加作为键以及事件处理程序类作为它的值。
最后一步是触发使用事件门面触发事伯。fire()方法由事件类的对象调用。事件可以触发如下 -
event::fire(<event class object>);
php artisan make:controller createstudentcontroller
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');
$age = $request->input('stud_age');
db::insert('insert into student (name,age) values(?, ?)',[$name, $age]);
echo "record inserted successfully.<br/>";
echo '<a href = "/event">click here</a> to go back.';
//firing an event
event::fire(new studentadded($name));
}
}
php artisan make:event studentadded
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 [];
}
}
第9步 - 创建一个事件处理文件在 app\handlers\events\handlenewstudentadded.php,复制以下代码到该文件中。
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><u>new student added in database with name: </u>".$this->name;
}
}
第10步 - 现在,我们需要添加事件类和处理程序类存储在文件 - app\providers\eventserviceprovider.php
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 {
/**
* the event listener mappings for the application.
*
* @var array
*/
protected $listen = [
'app\events\someevent' => [
'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);
//
}
}
app/http/routes.php
route::get('event','createstudentcontroller@insertform');
route::post('addstudent','createstudentcontroller@insert');
http://localhost:8000/event
第14步 - 增加学生的姓名,然后点击“添加学生”按钮,将您重定向到下面的屏幕。看看灰色高亮行。 我们已经指定处理方法,在一个事件被触发执行handlenewstudentadded类的处理方法时添加此行。





