因此,当我正在使用的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中,我将这个存储在我的store方法中:
event(new OrderWasCreated($order));
但是,当我创建新订单时,我的日志文件中什么也看不到.我想念什么?
解决方法:
可能您尚未将OrderEventListener添加到EventServiceProvider的subscription属性中,它应如下所示:
protected $subscribe = [
'App\Listeners\OrderEventListener',
];
如果添加了该文件,请运行clear art-an编译的php artisan,以确保您的应用使用当前版本的类.