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',
]
]
];
和 运行 再次命令,虽然我必须在 Events
和 Listeners
文件夹中手动创建此 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',
],
];
将 $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',
]
]
];
和 运行 再次命令,虽然我必须在 Events
和 Listeners
文件夹中手动创建此 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',
],
];