【问题标题】:Laravel override a package eventLaravel 覆盖一个包事件
【发布时间】:2020-01-06 15:56:46
【问题描述】:

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

例如

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

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

有什么想法吗?

【问题讨论】:

  • 您也许可以创建一个扩展此事件的新事件,例如class MyCustomEvent extends OrderPaymentFailed,然后挂钩到现有功能来做某事。

标签: laravel composer-php


【解决方案1】:

您可以在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();

        //
    }
}

【讨论】:

    猜你喜欢
    • 2019-12-27
    • 1970-01-01
    • 2019-12-01
    • 2021-11-30
    • 2014-12-18
    • 2023-01-01
    • 2013-07-06
    • 1970-01-01
    • 2011-08-26
    相关资源
    最近更新 更多