laravel事件和监听

一、注册事件和监听器,修改事件服务提供者EventServiceProvider

 protected $listen = [
        Registered::class => [
            SendEmailVerificationNotification::class,
        ],
        'App\Events\OrderPost' => [
            'App\Listeners\SendEmailToOrderUser',
        ],
    ];

二、生成事件和监听器

php artisan event:generate

三、修改事件文件OrderPost,

    public $order;
    public $express_type;
    public $express_no;

  public function __construct($order,$express_type,$express_no)
    {
        $this->order = $order;
        $this->express_type = $express_type;
        $this->express_no = $express_no;
    }

四、修改监听器 SendEmailToOrderUser

   public function handle(OrderPost $event)
    {
        $event->order->express_type = $event->express_type;
        $event->order->express_no = $event->express_no;
        $event->order->status = 3;
        $event->order->save();
        //发货之后,邮件提醒
        Mail::to($event->order->user)->queue(new \App\Mail\OrderPost($event->order));
    }

五、修改控制器文件

      //使用事件辅助函数分发
        event(new \App\Events\OrderPost(
            $order,
            $request->input('express_type'),
            $request->input('express_no')
        ));

或者

    //使用事件分发
        \App\Events\OrderPost::dispatch(
            $order,
            $request->input('express_type'),
            $request->input('express_no')
        );

posted @ 2023-02-05 12:15  深山居士123  阅读(68)  评论(0)    收藏  举报