我使用的是Laravel 5.5,我希望新注册的用户通过确认他们的电子邮件地址来激活他们的帐户。此外,我需要在现有的Laravel User模型上添加一些额外的字段或名称。 name
替换为first_name
和last_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)
)根本不起作用。我觉得代码甚至没有被执行(试图添加dd
或Log::info('...')
以便找出它是否被执行)并且在我尝试注册时没有真正发生。该页面有点刷新,但是,没有关于用户创建的消息(如果成功与否,......),并且随后在我的框中没有电子邮件。
我错过了一些关键细节吗?
答案 0 :(得分:1)
你花了几个小时才找到错误的其中一天刚刚结束。 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'
]);