因此,当在我正在处理的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
添加到EventServiceProvider
的subscribe
属性中,它应该是这样的:
protected $subscribe = [
'App'Listeners'OrderEventListener',
];
如果添加了,请运行php artisan clear-compiled
以确保您的应用程序使用当前版本的类。
在互联网上尝试多种解决方案后。最终是php artisan event:cache
帮我解决了这个问题!