事件监听
方法一:
web.php
Event::listen('eloquent.created: Apppost',function(){
dump('A post was created');
});
Route::get('/event53',function(){
Apppost::create(['title'=>'Title','content'=>'My Body']);
});
方法二:
注释掉
Event::listen('eloquent.created: Apppost',function(){
dump('A post was created');
});
post模型中定义事件
<?php
namespace App;
use AppEventsPostWasPublished;
use IlluminateDatabaseEloquentModel;
class post extends Model
{
protected $guarded = array();
protected $events = [
'created' => PostWasPublished::class
];
}
修改EventServiceProvider.php 中的$listen属性 创建事件和事件监听文件
protected $listen = [
'AppEventsPostWasPublished' => [
'AppListenersPostWasPublishedListener',
],
];
执行 php artisan event:generate
** 还可以依赖注入 **
AppEventsPostWasPublished.php
public $post;
public function __construct($post)
{
$this->post = $post;
}
AppListenersPostWasPublishedListener.php
public function handle(PostWasPublished $event)
{
dump($event->post->toArray());
}
方法三:普通路由触发event
app/Providers/EventServiceProvider.php
protected $listen = [
'AppEventsUserSignUp' => [
'AppListenersUserSignUpListener',
],
];
UserSignUp.php
use AppUser;
public $user;
public function __construct(User $user)
{
$this->user = $user;
}
UserSignUpListener.php
public function handle(UserSignUp $event)
{
dd($event->user->name);
}
web.php
Route::get('/eventroute',function(){
$user = AppUser::find(1);
event(new AppEventsUserSignUp($user));
});