我在Laravel 5.4中创建一个登录功能,当密码不正确时,我想在视图中显示错误消息。另外,我还有一条自定义消息,用于帐户批准,因此这对我来说有点困难。同时,我将这些消息放在一起,但不是很友好。如何分开?
这是我的控制器:
public function login(Request $request)
{
// validate the form data
$this->validate($request, [
'email' => 'required|email|exists:users,email',
'password' => 'required|min:6'
]);
// attempt to log
if (Auth::attempt(['approve' => '1', 'email' => $request->email, 'password' => $request->password ], $request->remember)) {
// if successful -> redirect forward
return redirect()->intended(route('user.overview'));
}
// if unsuccessful -> redirect back
return redirect()->back()->withInput($request->only('email', 'remember'))->withErrors([
'approve' => 'Wrong password or this account not approved yet.',
]);
}
Run Code Online (Sandbox Code Playgroud)
结果,我想替换Wrong password or this account not approved yet
为两个单独的消息:
如果密码错误,则显示:Password is wrong
如果帐户未批准,则显示:This account not approved yet
小智 5
您可以为每个验证规则传递自定义错误消息,您可以这样做:
public function login(Request $request)
{
//Error messages
$messages = [
"email.required' => "Email is required",
"email.email' => "Email is not valid",
"email.exists' => "Email doesn't exists",
"password.required" => "Password is required",
"password.min" => "Password must be at least 6 characters"
];
// validate the form data
$validator = Validator::make($request->all(), [
'email' => 'required|email|exists:users,email',
'password' => 'required|min:6'
], $messages);
if ($validator->fails()) {
return back()->withErrors($validator)->withInput();
} else {
// attempt to log
if (Auth::attempt(['approve' => '1', 'email' => $request->email, 'password' => $request->password ], $request->remember)) {
// if successful -> redirect forward
return redirect()->intended(route('user.overview'));
}
// if unsuccessful -> redirect back
return redirect()->back()->withInput($request->only('email', 'remember'))->withErrors([
'approve' => 'Wrong password or this account not approved yet.',
]);
}
}
Run Code Online (Sandbox Code Playgroud)
在此之前,您必须包括Validator类:
use Illuminate\Support\Facades\Validator;
Run Code Online (Sandbox Code Playgroud)