2015-12-28 37 views
3

所以我试图记录一些简单的事情,当我在工作的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\[email protected]' 
     ); 
    } 

    /** 
    * 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)); 

然而,当我是crea对新订单,我没有看到我的日志文件中的任何东西。我错过了什么?

+0

你必须注册你的事件与一个监听器,如https://laravel.com/docs/5.1/events#registering-events-and-listeners你添加了一个监听器与你的事件? –

回答

2

也许你还没有加入到OrderEventListenerEventServiceProvidersubscribe属性,它应该是这样的:

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

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

+0

我想知道我是否缺少某个地方的小东西。谢谢。 – Rohan

相关问题