首页 > 解决方案 > Laravel 覆盖一个包事件

问题描述

是否可以覆盖包提供的事件?

例如

通过 composer 安装到供应商目录中的包“laravel/cashier-mollie”有一个事件 laravel\cashier-mollie\src\Events\OrderPaymentFailed

我想要做的是在触发此事件时更新我的​​数据库中的特定字段。

有任何想法吗?

标签: laravelcomposer-php

解决方案


您可以为事件添加自己的侦听器app/Providers/EventServiceProvider.php

<?php

namespace App\Providers;

use Illuminate\Auth\Events\Registered;
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Event;
use Laravel\Cashier\Events\OrderPaymentFailed;
use App\Listeners\OrderPaymentsFailedListener;

class EventServiceProvider extends ServiceProvider
{
    /**
     * The event listener mappings for the application.
     *
     * @var array
     */
    protected $listen = [
        OrderPaymentFailed::class => [
            // Your custom listener
            OrderPaymentsFailedListener::class,
        ],

    ];

    /**
     * Register any events for your application.
     *
     * @return void
     */
    public function boot()
    {
        parent::boot();

        //
    }
}


推荐阅读