事件未在laravel中看到听众

时间:2019-09-17 20:23:43

标签: php laravel events frameworks listener

我以前使用过事件和侦听器,但是现在我尝试使用事件和侦听器,但是该事件并未将侦听器视为下面的代码

事件

<?php

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class teste
{
    use Dispatchable, InteractsWithSockets, SerializesModels;


    public function __construct()
    {

    }

    public function broadcastOn()
    {
        return [new PrivateChannel('channel-name')];
    }
}

它是事件的侦听器

<?php

namespace App\Listeners;

use App\Events\teste;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;

class testl
{

    public function __construct()
    {
        //
    }


    public function handle(teste $event)
    {
        return true;
    }
}

和eventProviderService

class EventServiceProvider extends ServiceProvider
{

    protected $listen = [
        // Registered::class => [
        //     SendEmailVerificationNotification::class,
        // ],
        'App\Events\teste' => [
            'App\Listeners\testl'
        ],


    ];

调用该事件的代码是

Route::get("test100" , function(){
        $Event = event(new \App\Events\teste());
        dd($Event);
    });

毕竟,当我使用函数dd()来检查输出时,没有任何输出,这没什么,它是空数组,不包含null或任何东西 当我在侦听器中使用函数dd()检查事件是否看到侦听器或否时,结果为

2 个答案:

答案 0 :(得分:0)

为使EventListener起作用,您需要映射哪些Listner响应给定的Event。在Laravel中,这是在EventServiceProvider

中处理的

以下示例摘自Laravel documentation

/**
 * The event listener mappings for the application.
 *
 * @var array
 */
protected $listen = [
    'App\Events\OrderShipped' => [
        'App\Listeners\SendShipmentNotification',
    ],
];

任意数量的Listener都可以对给定的Event做出反应

编辑:此外,请确保名称间隔对您的应用程序是正确的

答案 1 :(得分:0)

我已经通过从目录引导程序中删除现金文件并运行composer install来解决了问题