laravel event

本文介绍了在Laravel框架中实现事件监听的三种方法:通过web.php注册监听器、在模型中定义事件及通过路由触发事件。同时展示了如何使用依赖注入增强事件处理能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事件监听

方法一:
web.php

Event::listen('eloquent.created: App\post',function(){
    dump('A post was created');
});

Route::get('/event53',function(){
    \App\post::create(['title'=>'Title','content'=>'My Body']);
});

方法二:

注释掉

Event::listen('eloquent.created: App\post',function(){
        dump('A post was created');
    });

post模型中定义事件

<?php

namespace App;

use App\Events\PostWasPublished;
use Illuminate\Database\Eloquent\Model;

class post extends Model
{
    protected $guarded = array();
    protected $events = [
       'created' => PostWasPublished::class
    ];
}

修改EventServiceProvider.php 中的$listen属性 创建事件和事件监听文件

protected $listen = [
    'App\Events\PostWasPublished' => [
        'App\Listeners\PostWasPublishedListener',
    ],
];
        

执行 php artisan event:generate

** 还可以依赖注入 **

App\Events\PostWasPublished.php

public $post;

public function __construct($post)
{
    $this->post = $post;
}

App\Listeners\PostWasPublishedListener.php

 public function handle(PostWasPublished $event)
     {
         dump($event->post->toArray());
     }

方法三:普通路由触发event

app/Providers/EventServiceProvider.php

protected $listen = [
        'App\Events\UserSignUp' => [
            'App\Listeners\UserSignUpListener',
        ],
    ];
    

UserSignUp.php

 use App\User;
 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 = \App\User::find(1);
   event(new \App\Events\UserSignUp($user));
});

转载于:https://www.cnblogs.com/webskill/p/7469776.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值