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

しかし、新しい注文を作成しているときに、ログ ファイルに何も表示されません。私は何が欠けていますか?

4

1 に答える 1

4

のプロパティに追加OrderEventListenerしていない可能性があります。次のようになります。subscribeEventServiceProvider

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

追加した場合は、実行php artisan clear-compiledしてアプリが現在のバージョンのクラスを使用していることを確認してください。

于 2015-12-28T10:35:03.867 に答える