Laravel 5.2:重定向错误不起作用
我目前正在努力解决一个拉威尔问题,我自己也无法解决。如果我使用withErrors()传递错误,则错误不会传递到错误包($errors) 我的控制器(FormController):Laravel 5.2:重定向错误不起作用,laravel,laravel-5.2,Laravel,Laravel 5.2,我目前正在努力解决一个拉威尔问题,我自己也无法解决。如果我使用withErrors()传递错误,则错误不会传递到错误包($errors) 我的控制器(FormController): public function contact(Request $request) { $validator = Validator::make($request->all(), [ 'name' => 'required', 'emai
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();
}
Route::group(['middleware' => 'web'], function(){
Route::post('/contact', 'FormController@contact');
});
问题是,withInput()也不起作用。问题从何而来?我感谢你的帮助
(已定义路由的一部分)。php:
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();
}
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,
];
在Laravel 5.2中,您需要在路由中使用
web
中间件将错误传递给视图
Route::group(['middleware' => ['web']], function () {
Route::get('/', function() {
return view('welcome');
});
});
不要将任何内容传递给withInput
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
}
并使用旧函数获取闪存数据
$name = $request->old('name');
或
如果您重定向到的控制器也在使用
withErrors()
函数,则redirect()->back()->withErrors($validator)
中的错误消息将被覆盖
但是,旧消息仍在会话中。因此,您仍然可以通过会话('errors')读取和显示它们。
:
@if($errors->any())
@foreach($errors->all()作为$error)
- {{$error}}
@endforeach
@elseif(null!==会话('errors')&&session('errors')->any())
@foreach(session('errors')->all()作为$error)
- {{$error}}
@endforeach
@恩迪夫
会话对您有用吗?尝试重定向路由或url,而不是back@matiit该站点的其余部分正在进行会话。当我检查带有debugbar的POST to contact()时,“errors”出现在带有正确错误的会话中。@ImtiazPabel我尝试了此操作,但不幸的是没有对此问题进行任何更改。。请尝试…->withErrors($validator->errors())->…
感谢您的帮助,不幸的是我已经在使用“web”中间件组。。。我听说在中间件组之间交换会话时出现问题,但我只使用“web”中间件组。我尝试过,但没有任何运气。。。我认为这是一个会话问题,但会话按预期进行。