Laravel 5.5赛事不会开火

时间:2018-02-06 03:49:07

标签: php laravel laravel-5

我正在研究一个幼虫项目,当用户注册时,该项目有两个事件。一个事件将为用户创建所有角色和权限,另一个事件将向用户发送欢迎电子邮件。在事件服务提供商中,我有:

protected $listen = [
    'App\Events\NewUser' => [
        'App\Listeners\CreateAuthorization',
        'App\Listeners\SendWelcomeEmail',
    ],
];

在新的用户事件中,我让用户在构造函数中传递,如下所示:

class NewUser
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $user;

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

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

到目前为止,我尝试过只实现一个侦听器,那就是CreateAuthorization侦听器

class CreateAuthorization
{
public function __construct()
{
    //
}
public function handle(NewUser $event)
{
    //
    Log::info('This is some useful information.');
    $user_role = new UserRole();
    $user_role->user_id = $event->user->id;
    $user_role->permission_id = $role->id;
    $user_role->save();
}
}

在用户的模型类中,我将其链接在一起。

protected $events = [
    'created' => NewUser::class
];

我已经尝试清除缓存并记录消息,但是从我在日志中看到的消息甚至没有显示,这使我认为在创建用户时甚至没有触发事件。我对如何解决这个问题感到非常失望。

1 个答案:

答案 0 :(得分:0)

基于laravel文档,我也进行了测试。

// Wrong
protected $events = [
    'created' => NewUser::class
];

正确的应该是

// Correct
protected $dispatchesEvents = [
    'created' => NewUser::class
];

您可以在https://laravel.com/docs/5.5/eloquent#events

上详细了解相关信息