我一直在寻找类似的问题,并尝试了每一个答案。验证器检查规则并重定向。但是我的观点中的$ errors变量仍然是空的。
控制器:
public function postSlidesAdd(Request $request)
{
$validator = Validator::make($request->all(), [
'priority' => 'required',
'text' => 'required',
'image' => 'required'
]);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator);
}
//insert to db and redirect back
}
路线:
Route::group(['middleware' => ['web']], function () {
Route::post('/admin/slides/add', [
'uses' => 'SitesController@postSlidesAdd',
'as' => 'admin.slides.add'
]);
});
查看:
<div class="">
@if(count($errors)>0))
<ul>
@foreach($errors->all() as $error)
<li>{{$error}}</li>
@endforeach
</ul>
@endif
</div>
我想我错过了一些小而重要的事情,请帮忙。 我正在使用Laravel 5.2.29
更新: 如果这有任何帮助;在我的控制器中:
if ($validator->fails()) {
dd($validator->errors());
return back()->withErrors($validator);
}
这会转储数组'messages',而另一个数组包含[input names =&gt;错误信息]。我认为这是要发送给视图的数组,但它没有通过。请帮助我做错了什么。
答案 0 :(得分:4)
在app\Http\Kernel.php
移动\Illuminate\Session\Middleware\StartSession::class
从'网络'$middlewareGroups
到$middleware
答案 1 :(得分:0)
您的视图文件出错;你有一个额外的括号。尝试更改此内容:
@if(count($errors)>0))
对此:
@if(count($errors) > 0)
此外,在您的控制器中,尝试更改:
return redirect()->back()->withErrors($validator);
对此:
return back()->withErrors($validator);