我在Blade视图上打印$ errors时遇到问题。我在控制器/型号上使用验证器,一切正常,刀片可以打印$错误。 但现在我想将该验证迁移到Form请求。
如果我使用json / ajax(application / json)一切正常,所有错误都会响应。但是当我使用form-data(multipart / form-data)时,$ errors变量总是为空。
我缺少什么?这是一些代码:
查看:
{{ Form::open(['url' => 'foo','files' => true, 'name'=>'foo-form']) }}
//some inputs
{{Form::close()}}
表格申请:
public function authorize()
{
return true;
}
public function rules()
{
return [
"id" => "required|exists:foo,id",
"begin_date" => "required|date",
"end_date" => "required|date|after:begin_date"
];
}
[编辑]
我已经尝试了很多方法来显示我的错误:
- 官方方式: https://laravel.com/docs/5.4/validation#quick-displaying-the-validation-errors
- 使用var_dump和dd
- 我的方式(在模型/控制器上使用验证器):
@if(Session::has('errors'))
<div class="alert alert-danger alert_header">
@foreach(Session::get('errors') as $error)
<p>{{ $error }}</p>
@endforeach
</div>
@endif
我已经使用浏览器(Chrome)和邮差测试了
[编辑]
控制器:
public function uploadFoo(StoreUploadFoo $request)
{
return "Foo without errors";
}
Laravel版本:5.4
答案 0 :(得分:0)
您可能需要在控制器中设置会话,以便在$error
变量中返回所需的值。
public function uploadFoo(StoreUploadFoo $request)
{
Session::flash('errors', array('id' => 'ID required', 'begin_date' => 'Begin Date required', 'end_date' => 'End Date'));
return redirect('/url/to/your/view');
}
然后在你看来:
@if(Session::has('errors'))
<div class="alert alert-danger alert_header">
@foreach(Session::get('errors') as $error)
<p>{{ $error }}</p>
@endforeach
</div>
@endif
希望这有助于你的情况。