正在从MessageBag Laravel中删除自定义错误
当试图登录的用户未在我的网站中注册时,我试图显示自定义错误消息。我有这个密码正在从MessageBag Laravel中删除自定义错误,laravel,error-handling,Laravel,Error Handling,当试图登录的用户未在我的网站中注册时,我试图显示自定义错误消息。我有这个密码 if (!(User::where('nickname',$request->input('nickname'))->exists())) { // adding a custom error if user with such nickname doesn't exist $errors = new MessageBag; $errors->add('noExist',
if (!(User::where('nickname',$request->input('nickname'))->exists())) {
// adding a custom error if user with such nickname doesn't exist
$errors = new MessageBag;
$errors->add('noExist', 'User with such nickname doesnt exist');
return view('login')->withErrors($errors)->with('title','Login');
}
错误会打印出来,但我想将其从MessageBag中删除,因此刷新后不会显示。如何实现这一点?如果在POST
方法中返回view()
,就像控制器函数处理登录尝试一样,任何后续刷新都只需重新提交表单。由于这个原因,ErrorBag
不会像您预期的那样刷新(返回默认状态)。要解决此问题,请使用适当的重定向()
来处理重新呈现视图()
:
$errors
将从POST
请求传回GET
请求处理登录
视图的显示,刷新时将被清除。不要在POST
方法中返回视图();重定向回GET
版本,错误将显示一次,刷新/重新提交后,错误将不会再次显示(除非再次触发)。您可以显示一个重定向回GET
版本的示例吗?当然,例如return redirect(/login”)->withErrors($errors)代码>。只要您有一个与/login
匹配的路由(我假设登录屏幕使用该路由),并且您在重定向()
上使用->withErrors()
,它就应该在后续的GET
请求中显示它们。非常感谢,太棒了;我会转换成一个答案,等一下。
// return view('login')->withErrors($errors)->with('title','Login');
return redirect("/login")->withErrors($errors);