显示Laravel验证错误


Laravel validation errors displaying

我正试图让验证错误显示在我的应用程序中,结果遇到了麻烦。

我已经尝试了几种不同的方式,这就是我目前的设置方式。。。

我的路线是这样的:

<?php
Route::group(['middleware' => ['web']], function () {
    Route::get('/', [
        'as'   => 'home',
        'uses' => 'HomeController@index'
    ]);
    Route::post('/mailing', [
        'as' => 'mailing.create',
        'uses' => 'MailingController@create'
    ]);
});

我的邮件控制器是这样的:

class MailingController extends Controller
{
    public function create(Request $request)
    {
        $this->validate($request, [
            'email' => 'required',
        ]);
        dd($request->email);
    }
}

我的表格是这样的。。。

            <form action="{{ route('mailing.create') }}" method="post">
                <label for="email">
                    Email
                    <input type="text" name="email" id="email">
                    @if ($errors->has('email'))
                        {{ $errors->first('email') }}
                    @endif
                </label>
                <input type="submit">
                {{ csrf_field() }}
            </form>

当我提交一个空表单时,它会转到MailingController中的create方法,但不会发生任何事情,也不会显示任何错误。只是表格。

这真的应该有效,问题可能是上面的例子适用于Laravel 5.1,但在最新的5.2版本中不起作用吗?

非常感谢您的好意。

您可以在官方文档中看到,默认情况下应用web中间件组:

请记住,web中间件组自动应用于您的默认routes.php文件。

如果您执行

 php artisan route:list

您可以看到中间件被应用于web路由器两次。

您必须删除组

Route::group(['middleware' => ['web']], function () {
}

这在一个次要的5.2版本中发生了变化,所以很可能是在"composer更新"之后出现了这个错误。

更多信息请点击此处。

看来我必须回答自己的问题。。。在laravel 5.2中,路由自动位于中间件路由中,因此从。。。

<?php
Route::group(['middleware' => ['web']], function () {
    Route::get('/', [
        'as'   => 'home',
        'uses' => 'HomeController@index'
    ]);
    Route::post('/mailing', [
        'as' => 'mailing.create',
        'uses' => 'MailingController@create'
    ]);
});

<?php
    Route::get('/', [
        'as'   => 'home',
        'uses' => 'HomeController@index'
    ]);
    Route::post('/mailing', [
        'as' => 'mailing.create',
        'uses' => 'MailingController@create'
    ]);

修复了所有问题。