Laravel 5.2 未显示表单验证错误

Laravel 5.2 not showing form validation errors

这很奇怪。我整天都在谷歌上搜索,试图为我的问题找到解决方案,但由于不同的版本或不同的请求 - 控制器处理,大多数解决方案都不适合我。

这是怎么回事。

我有一个表格:

<div class="form-group">
    Name *
    {!! Form::text('name', '', ['class'=>'form-control', 'placeholder'=>'Required field']) !!}
</div>

还有一个请求:

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',
        ];
    }
}

我将名称字段留空,因此验证失败,它应该 return 到联系表单页面并显示错误:

@if(count($errors) > 0)
        <div class="alert alert-danger">
            <ul>
            @foreach($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
            </ul>
        </div>
@endif

什么都没显示!如果我 vardump $errors 变量,我得到这个:

object(Illuminate\Support\ViewErrorBag)[161]
  protected 'bags' => 
    array (size=0)
      empty

如果我正确填写表单字段,它会成功将我发送到成功页面并且一切正常。我现在需要做的就是让这个错误的东西正常工作 :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...
});

看到这个
laravel-5-2-errors-not-appearing-in-blade