【发布时间】:2021-06-22 07:27:41
【问题描述】:
我已经在同一个页面上合并了所有登录、创建用户和忘记密码,并且对于错误处理,3 个表单上的“电子邮件”输入应该不同。我已将登录表单的电子邮件输入中的名称设置为:默认为“电子邮件”。我已将创建用户的名称设置为:“注册电子邮件”并更改了 RegisterController 中的“验证器”功能,因此它看起来像这样:
protected function validator(array $data)
{
$validator = Validator::make($data, [
'register-email' => ['required', 'string', 'email', 'max:255', 'unique:users,email'],
'register-password' => ['required', 'string', 'min:8', 'max:255', 'confirmed'],
]);
$validator->setAttributeNames([
'register-email' => 'email',
'register-password' => 'password',
]);
return $validator;
}
它就像一个魅力!
现在我在忘记表单上将电子邮件输入名称设置为“忘记电子邮件”,但我不知道如何更正 ForgotPasswordController 来处理此问题。
我已尝试使用更新后的名称覆盖以下函数:
protected function validateEmail(Request $request)
{
$request->validate(['forgot-email' => 'required|email']);
}
protected function credentials(Request $request)
{
return $request->only('forgot-email');
}
protected function sendResetLinkFailedResponse(Request $request, $response)
{
if ($request->wantsJson()) {
throw ValidationException::withMessages([
'forgot-email' => [trans($response)],
]);
}
return back()
->withInput($request->only('forgot-email'))
->withErrors(['forgot-email' => trans($response)]);
}
但我只是收到一条错误消息:
SQLSTATE[42703]:未定义列:7 错误:列“forgot-email”确实 不存在 LINE 1: select * from "users" where "forgot-email" = $1 限制 1 ^ (SQL: select * from "users" where "forgot-email" = test@domain.com 限制 1)
问题很明显,它认为input-name和列名是一样的,这里不是这样的。那么如何告诉控制器使用“forgot-email”作为电子邮件呢?
【问题讨论】: