Laravel 5活动无法正常工作

时间:2015-06-01 02:29:32

标签: events laravel-5

Sr,我尝试在下面的例子中使用laravel 5,但它不起作用。

namespace App\Events;

use Illuminate\Queue\SerializesModels;

class DidSomething extends Event {
    use SerializesModels;
    public function __construct() {
     return;
    }
}

和处理

命名空间App \ Handlers \ Events;

使用App \ Events \ DidSomething;

class DoSomething {
    public function __construct() {
    }
    public function handle(DidSomething $event) {
      dd($event);
    } 
 }

和我的EventServiceProvider.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 handler mappings for the application.
   *
   * @var array
   */
   protected $listen = [
        App\Events\DidSomething::class=>[
                App\Handlers\Events\DoSomething::class
        ]
   ];

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

    //
}

}

在我的控制器中,我使用\ Event :: fire(new DidSomething());

我曾尝试使用命令行

php artisan event:generate
php artisan optimize
composer update

1 个答案:

答案 0 :(得分:0)

  1. 生成活动

    art make:event LogMe

  2. 为该事件生成事件处理程序

    艺术处理程序:事件LogMe --event =“LogMe”

  3. 确保在活动服务provider (app/Providers/EventServiceProvider.php)

  4. 中注册活动并将其注册

    //

    protected $listen = [
       'event.name' => [
          'EventListener',
       ],
    
           \Xxx\Events\LogMe::class => [
                 \Xxx\Handlers\Events\LogMe::class,
           ],
    
    ];
    
    1. 点燃一个事件 Event::fire(New LogMe()); - 或者 - 您可以使用事件助手event(New LogMe());
    2.   

      或者,您可以通过在服务提供程序中注册事件然后运行此命令来生成事件   art event:generate<<这将自动为您添加两个类

      1. 您可以在不创建事件处理程序或在侦听器数组中注册列表器的情况下侦听事件。
      2. 转到活动服务证明者并在启动功能内写下您的活动及其行动(不推荐)

        Event::listen('XXX\Events\DoSomethingElse', function($event)
        {
             dd('handle me :)');
        });
        
        1. 您可以对某个事件进行排队,甚至可以从该类本身内订阅多个事件