laravel event

事件监听

方法一:
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));
});
原文地址:https://www.cnblogs.com/webskill/p/7469776.html