我在Laravel 5.2中验证有些麻烦当我在这样的控制器中尝试验证请求时
$this->validate($request, [
'title' => 'required',
'content.*.rate' => 'required',
]);
Run Code Online (Sandbox Code Playgroud)
验证器捕获错误,但不将它们存储到会话中,所以当我尝试在模板中调用此代码时
@if (isset($errors) && count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
Run Code Online (Sandbox Code Playgroud)
Laravel抛出错误
Undefined variable: errors (View: /home/vagrant/Code/os.dev/resources/views/semantic/index.blade.php)
Run Code Online (Sandbox Code Playgroud)
当我尝试使用此代码验证时
$validator = Validator::make($request->all(), [
'title' => 'required',
'content.*.rate' => 'required'
]);
if ($validator->fails()) {
return redirect()
->back()
->withInput($request->all())
->withErrors($validator, 'error');
}
Run Code Online (Sandbox Code Playgroud)
变量$ error在模板中也不可用,但如果我尝试在控制器中显示错误
if ($validator->fails()) {
dd($validator->errors()->all());
}
Run Code Online (Sandbox Code Playgroud)
错误显示但我无法从模板访问它们.
怎么了?
这很奇怪.我一直在谷歌搜索试图找到我的问题的解决方案,由于不同的版本或不同的请求 - 控制器处理,大多数解决方案不适合我.
这是怎么回事.
我有一个表格:
<div class="form-group">
Name *
{!! Form::text('name', '', ['class'=>'form-control', 'placeholder'=>'Required field']) !!}
</div>
Run Code Online (Sandbox Code Playgroud)
并要求:
class ContactFormRequest extends Request
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'name' => 'required|max:64',
'email' => 'required|email|max:128',
'message' => 'required|max:1024',
];
}
}
Run Code Online (Sandbox Code Playgroud)
我将名称字段留空,因此验证失败,应该返回联系表单页面并显示错误:
@if(count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
Run Code Online (Sandbox Code Playgroud)
它没有显示!如果我vardump是$errors变量,我得到这个:
object(Illuminate\Support\ViewErrorBag)[161]
protected 'bags' =>
array (size=0)
empty
Run Code Online (Sandbox Code Playgroud)
如果我正确填写表单字段,它会成功地将我发送到成功页面,一切都很完美.我现在需要的是让这个错误的东西正常工作:S
先感谢您!