在从控制器重定向后,在Laravel中显示错误消息。
在从控制器重定向后,在Laravel中显示错误消息。
在Laravel中,如何在重定向的视图中显示验证消息?
这是我的控制器中的函数:
public function registeruser() { $firstname = Input::get('firstname'); $lastname = Input::get('lastname'); $data = Input::except(array('_token')) ; $rule = array( 'firstname' => 'required', 'lastname' => 'required', ) ; $validator = Validator::make($data,$rule); if ($validator->fails()) { $messages = $validator->messages(); return Redirect::to('/')->with('message', '注册失败'); } else { DB::insert('insert into user (firstname, lastname) values (?, ?)', array($firstname, $lastname)); return Redirect::to('/')->with('message', '注册成功'); } }
我知道下面的代码是错误的尝试,但是我该如何修复它以及我错过了什么:
@if($errors->has())
@foreach ($errors->all() as $error)
{{ $error }}
@endforeach
@endif
更新:我如何在特定字段附近显示错误消息?
问题的出现原因:在Laravel中,当控制器重定向到视图页面时,可能会出现错误消息无法正确显示的问题。在上述代码中,使用了Laravel提供的$errors对象来检查是否存在名为'category'的错误,并将错误消息显示在视图中。然而,该代码可能无法正常工作,导致错误消息无法正确显示。
解决方法:下面是解决该问题的方法:
1. 确保在控制器中使用了验证规则。在控制器中,可以使用Laravel提供的验证器来验证用户输入的数据。例如,可以使用validate方法来验证表单数据。确保在控制器中使用了正确的验证规则。
2. 在控制器中使用withErrors方法。在重定向到视图页面之前,可以使用withErrors方法将错误消息绑定到重定向的请求中。例如,在控制器中可以使用以下代码来将错误消息绑定到重定向的请求中:
return redirect()->back()->withErrors($validator);
其中$validator是之前使用验证器验证表单数据后获得的验证器实例。
3. 在视图页面中正确显示错误消息。在视图页面中,可以使用错误消息辅助函数来显示错误消息。例如,在视图页面中可以使用以下代码来显示名为'category'的错误消息:
@if ($errors->has('category'))
{{ $errors->first('category') }}
@endif
以上是解决在Laravel中重定向后无法正确显示错误消息的方法。通过验证规则、使用withErrors方法将错误消息绑定到重定向的请求、在视图页面中使用错误消息辅助函数,可以解决该问题。
问题原因:在Laravel中,当从控制器重定向后显示错误消息时,出现了问题。
解决方法:可以通过以下方式解决该问题:
1. 如果你想从同一个控制器加载视图,可以使用以下代码:
if ($validator->fails()) { return self::index($request)->withErrors($validator->errors()); }
2. 如果你想快速显示所有错误但需要更多的控制,可以使用以下代码:
if ($errors->any()) { foreach ($errors->all() as $error) { echo "<div>{{$error}}</div>"; } }
问题原因:在Laravel中,当验证失败时,控制器会将错误信息返回到视图页面。但是在视图页面上显示这些错误信息需要通过一些特定的代码来实现。
解决方法:要在视图页面上显示错误信息,可以使用以下代码:
1. 当验证失败时,返回上一个页面,并将错误信息传递给视图页面:
if($validator->fails()) { return Redirect::back()->withErrors($validator); }
2. 在视图页面上,使用以下代码来捕获错误信息:
@if($errors->any()) {{ implode('', $errors->all(':message')) }} @endif
3. 如果要在每个字段下显示错误信息,可以使用以下代码:
@if($errors->has('firstname')){{ $errors->first('firstname') }}@endif
4. 如果要一次显示所有错误信息,可以使用以下代码:
@if($errors->any()) {!! implode('', $errors->all(':message')) !!} @endif
5. 如果要在每个字段下显示错误信息,可以使用以下代码:
('firstname'){{ $message }}
6. 如果在验证失败后要保持输入框中的值,可以使用以下代码:
请注意,$errors->first('firstname')
只会显示给定字段的第一条错误信息。如果有多个错误信息,可以使用$errors->get('firstname')
将它们作为数组获取,以便进行循环显示。
对于使用Bootstrap的用户,以下是适用于Bootstrap的代码片段:
@if($errors->any()) {!! implode('', $errors->all(':message')) !!} @endif