Jua*_*ett 8 php forms laravel laravel-5.2
这很奇怪.我一直在谷歌搜索试图找到我的问题的解决方案,由于不同的版本或不同的请求 - 控制器处理,大多数解决方案不适合我.
这是怎么回事.
我有一个表格:
<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
先感谢您!
这是 5.2 升级中的一个重大问题。发生的情况是,负责使错误变量可用于所有视图的中间件没有被利用,因为它已从全局中间件移至 Web 中间件组。
有两种方法可以解决此问题:
1-在 kernel.php 文件中,您可以将中间件移\Illuminate\View\Middleware\ShareErrorsFromSession::class回属性protected $middleware。
2-您可以使用路由组包装所有 Web 路由,并将 Web 中间件应用于它们。
Route::group(['middleware' => 'web'], function() {
// Place all your web routes here...
});
Run Code Online (Sandbox Code Playgroud)
请参阅此
laravel-5-2-errors-not-appearing-in-blade
| 归档时间: |
|
| 查看次数: |
2941 次 |
| 最近记录: |