mardi 8 mars 2016

Event listeners not firing in Laravel 5.1

I am having an issue getting my event listeners to fire in Laravel 5.1.

I am firing the following event:

/**
 * Add new project.
 *
 * @param AddNewProjectRequest $request
 * @return Redirect
 */
public function add(AddNewProjectRequest $request) 
{
    // Event(s);
    Event::fire(new ProjectAdded($project, $request->only('file')));
}

I have the following event setup:

<?php

namespace App\Events\Project;

use App\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class ProjectAdded extends Event
{
    use SerializesModels;

    public $project;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct($project)
    {
        $this->project = $project;
    }

    /**
     * Get the channels the event should be broadcast on.
     *
     * @return array
     */
    public function broadcastOn()
    {
        return [];
    }
}

Here is my EventServiceProvider file:

<?php

namespace App\Providers;

use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;

class EventServiceProvider extends ServiceProvider
{
    /**
     * The event listener mappings for the application.
     *
     * @var array
     */
    protected $listen = [
        \App\Events\ProjectAdded::class => [
            \App\Listeners\Project\ImportFileListener::class,
        ],
    ];

    /**
     * Register any other events for your application.
     *
     * @param  \Illuminate\Contracts\Events\Dispatcher  $events
     * @return void
     */
    public function boot(DispatcherContract $events)
    {
        parent::boot($events);

        //
    }
}

Here is my ImportFileListener listener:

<?php

namespace Woodford\Listeners\Project;

use Woodford\Events\ProjectAdded;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;

class ImportFileListener 
{
    /**
     * Create the event listener.
     *
     * @return void
     */
    public function __construct()
    {

    }

    /**
     * Handle the event.
     *
     * @param  ProjectAdded  $event
     * @return void
     */
    public function handle(ProjectAdded $event)
    {
        dd('listener');
    }
}

As you can see above I have added dd('listener'); to see if the listener gets fired - it doesn't!

I have also tried running php artisan optimize and composer dump-autoload but still no luck!

Does anyone know what could be wrong?



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire