Laravel 添加了新事件,但侦听器不起作用

Laravel added new event and listeners don't work

$listen 变量更新为

protected $listen = [
    'App\Events\UserActivationCode' => [
        'App\Listeners\UserActivationCode\SendMailNotification',
        'App\Listeners\UserActivationCode\SendSMSNotification',
    ]
];

EventServiceProvider和运行宁

php artisan event:generate

命令、事件和侦听器已创建,我过去部署它们,现在当我将其更新为:

protected $listen = [
    'App\Events\UserActivationCode' => [
        'App\Listeners\UserActivationCode\SendMailNotification',
        'App\Listeners\UserActivationCode\SendSMSNotification',
    ],
    [
        'App\Events\UserTracker' => [
            'App\Listeners\UserTracker\StoreUserTracker',
        ]
    ]
];

和 运行 再次命令,虽然我必须在 EventsListeners 文件夹中手动创建此 class,但不会创建此事件和侦听器,现在这个活动不适合我

在路线中测试:

Route::get('/page/mahdi', function () {
    event(new \App\Events\UserTracker(\App\User::find(2),'hi',request()->ip()));
}

事件:

class UserTracker
{
    use Dispatchable, InteractsWithSockets, SerializesModels;
    public $user;
    public $action_name;
    public $user_ip;

    public function __construct(User $user, $action_name, $user_ip)
    {
        $this->user = $user;
        $this->action_name = $action_name;
        $this->user_ip = $user_ip;
    }

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

听众:

use App\Events\UserTracker;
class StoreUserTracker
{
    public function __construct()
    {
        //
    }

    public function handle(UserTracker $event)
    {
        dd($event);
    }
}

方括号太多了。删除 UserTracker 事件周围的那些:

protected $listen = [
    'App\Events\UserActivationCode' => [
        'App\Listeners\UserActivationCode\SendMailNotification',
        'App\Listeners\UserActivationCode\SendSMSNotification',
    ],
    'App\Events\UserTracker' => [
        'App\Listeners\UserTracker\StoreUserTracker',
    ],
];