为什么我的事件监听器没有在laravel 5中开火


Why is my event listener not firing in laravel 5?

因此,当在我正在处理的laravel 5应用程序中创建新订单时,我试图记录一些简单的事情。

所以我有一个OrderWasCreated事件,看起来是这样的:

<?php
namespace App'Events;
use App'Events'Event;
use Illuminate'Queue'SerializesModels;
use Illuminate'Contracts'Broadcasting'ShouldBroadcast;
use App'Order;
class OrderWasCreated extends Event
{
    use SerializesModels;
    public $order;
    /**
     * OrderWasCreated constructor.
     */
    public function __construct(Order $order)
    {
        $this->order = $order;
    }

    /**
     * Get the channels the event should be broadcast on.
     *
     * @return array
     */
    public function broadcastOn()
    {
        return [];
    }
}

然后我有OrderEventListener,看起来是这样的:

<?php
namespace App'Listeners;
use App'Events'OrderWasCreated;
use Illuminate'Queue'InteractsWithQueue;
use Illuminate'Contracts'Queue'ShouldQueue;
class OrderEventListener
{
    /**
     * Create the event listener.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }
    public function subscribe(Dispatcher $events)
    {
        $events->listen(
            'App'Events'OrderWasCreated',
            'App'Listeners'OrderEventListener@onOrderWasCreated'
        );
    }
    /**
     * Handle the event.
     *
     * @param  OrderWasCreated  $event
     * @return void
     */
    public function onOrderWasCreated(OrderWasCreated $event)
    {
        'Log::info('Order was created event fired');
    }
}

在我的OrderController中,我在存储方法中的某个位置有这样的方法:

    event(new OrderWasCreated($order));

然而,当我创建新订单时,我在日志文件中看不到任何内容。我错过了什么?

可能您还没有将OrderEventListener添加到EventServiceProvidersubscribe属性中,它应该是这样的:

protected $subscribe = [
   'App'Listeners'OrderEventListener',
];

如果添加了,请运行php artisan clear-compiled以确保您的应用程序使用当前版本的类。

在互联网上尝试多种解决方案后。最终是php artisan event:cache帮我解决了这个问题!