我目前正在努力应对Laravel问题,我无法解决自己。如果我使用withErrors()传递错误,则错误不会传递给Error Bag($ errors)。
我的控制器(FormController):
public function contact(Request $request) {
$validator = Validator::make($request->all(), [
'name' => 'required',
'email' => 'required|email',
'message' => 'required',
]);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput($request->all());
}
return redirect()->back();
}
问题是,withInput()也不起作用。问题可能来自哪里?感谢您的帮助!
(部分)已定义的routes.php:
Route::group(['middleware' => 'web'], function(){
Route::post('/contact', 'FormController@contact');
});
会话配置
return [
'driver' => env('SESSION_DRIVER', 'memcached'),
'lifetime' => 120,
'expire_on_close' => false,
'encrypt' => false,
'files' => storage_path('framework/sessions'),
'connection' => null,
'table' => 'sessions',
'lottery' => [2, 100],
'cookie' => 'session',
'path' => '/',
'domain' => null,
'secure' => false,
];
答案 0 :(得分:0)
在Laravel 5.2中,您需要使用路由中的web
中间件将错误传递给视图。
Route::group(['middleware' => ['web']], function () {
Route::get('/', function() {
return view('welcome');
});
});
答案 1 :(得分:0)
不要将任何内容传递给withInput
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
}
并使用旧函数获取闪存数据
$name = $request->old('name');
或
{{old('name')}}
希望有所帮助
答案 2 :(得分:0)
如果您重定向到的控制器也使用withErrors()
函数,则redirect()->back()->withErrors($validator)
中的错误消息将被覆盖。
但是,旧邮件仍在会话中。因此,您仍然可以使用session('errors')
阅读和显示它们:
@if ($errors->any())
<div class="alert alert-danger">
<ul class="my-0">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@elseif (null !== session('errors') && session('errors')->any())
<div class="alert alert-danger">
<ul class="my-0">
@foreach (session('errors')->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif