gpt4 book ai didi

php - 为什么我的事件监听器没有在 Laravel 5 中触发?

转载 作者:可可西里 更新时间:2023-10-31 23:17:52 24 4
gpt4 key购买 nike

因此,当在我正在处理的 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 - 为什么我的事件监听器没有在 Laravel 5 中触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34491765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com