laravel - 为什么不出现验证错误?
问题描述
我在下面有这个功能来更新经过身份验证的用户的电子邮件。
问题是如果存在验证错误,自定义消息不会出现在视图中。
你知道为什么吗?
public function updateEmail(Request $request){
$rules = [
'email' => 'required|email'
];
$customMessages = [
'email.required' => 'The email field is required.',
'email.email' => 'Please insert a valid email.'
];
$validator = Validator::make($request->all(), $rules, $customMessages);
if ($validator->fails()) {
return redirect(route('user.index', ['user' => Auth::id()]) . '#loginData');
}
$user = Auth::user();
$user->email = $request->email;
$user->save();
Session::flash('success', 'Email updated with success.');
return redirect(route('user.index', ['user' => Auth::id()]) . '#loginData');
}
看法:
<div class="tab-pane fade clearfix" id="loginData" role="tabpanel" aria-labelledby="profile-tab">
@include('includes.errors')
<form method="post" action="{{route('user.updateEmail')}}">
{{csrf_field()}}
<div class="form-row">
<div class="form-group col-md-6">
<label>Email</label>
<input type="email" value="{{$user->email}}" class="form-control" name="email">
</div>
<div class="form-group col-md-4">
<label>Email</label>
<button>Update Email</button>
</div>
</div>
</form>
</div>
解决方案
改变这个:
if ($validator->fails()) {
return redirect(route('user.index', ['user' => Auth::id()]) . '#loginData');
}
更改为这个,以便您可以在会话中返回错误并使用 {{$errors->first}} 或 foreach 循环通过它们, $errors->all() as $error
if ($validator->fails()) {
return redirect()->back()->withErrors($validator);
}
在 laravel 5.6 中,当使用 withErrors 方法时,$errors 变量将在重定向后自动与您的视图共享。
推荐阅读
- angular - 在使用浏览器的刷新按钮重新加载应用程序之前,Angular 路由器链接不起作用
- html - Anki Cards 中的 HTML 条件样式
- vbscript - UFT-Insight 对象
- java - 创建 Spring Boot 应用程序时出错
- django - 社区网站上应该有身份验证吗?
- javascript - react scrollTo 不是一个函数
- nginx - phpmyadmin 未加载 png(图像) nginx
- android - Firebase 嵌套子项的 Recycleview 无法显示
- javascript - 在加载视图或显示页面时使用进度条
- apache-kafka - Spring Cloud Stream Kafka Binder autoCommitOnError=false 得到意外行为