Laravel 5.5 邮件确认和模型调整

Laravel 5.5 email confirmation and model adjustments

我正在使用 Laravel 5.5,我希望新注册的用户通过确认他们的电子邮件地址来激活他们的帐户。此外,我需要对现有 Laravel 用户模型进行一些额外的字段或名称更改。 name 替换为 first_namelast_name

我发现 Laravel 管理 Auth/RegisterController 中的大部分注册,所以我修改了我需要的内容:

protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => 'required|string|max:255',
        'email' => 'required|string|email|max:255|unique:users',
        'password' => 'required|string|min:12',
        'first_name' => 'required|string|min:2',
        'last_name' => 'required|string|min:2',
        'terms' => 'accepted'
    ]);
}

验证器工作正常,如果我更改 first_name min:n,它会在之后正确验证并显示给用户 [验证错误]。

protected function create(array $data)
{
    $user = User::create([
        'first_name' => $data['first_name'],
        'last_name' => $data['last_name'],
        'email' => $data['email'],
        'status' => 'inactive',
        'password' => bcrypt($data['password']),
        'api_token' => static::generateApiKey(),
    ]);

    $activationLink = route('account.activation', static::generateRandomString());
    Mail::to($user)->send(new UserAccountConfirmationMail($user, $data['password'], $activationLink));
    return $user;
}

然而,创建(create(array $data))根本不起作用。我觉得代码甚至没有执行(试图添加 ddLog::info('...') 以查明它是否被执行)并且当我尝试注册时没有真正发生。该页面有点刷新,但是,没有关于用户创建的消息(如果成功与否,......),随后我的邮箱中没有电子邮件。

我是不是漏掉了一些重要的细节?

您花了数小时查找错误的这些天中的一天刚刚结束。 validator,我以为一切正常,因为它通常显示错误,已经成为转折点。我忘了从验证中删除 name。但是,此验证错误从未向我显示,因为我只在显示时发现了我真正需要的这些错误。

解决方案:

return Validator::make($data, [
    'email' => 'required|string|email|max:255|unique:users',
    'password' => 'required|string|min:12',
    'first_name' => 'required|string|min:2',
    'last_name' => 'required|string|min:2',
    'terms' => 'accepted'
]);