Laravel中的验证错误 - 验证失败后,$ errors数组不会填充

Ale*_*mia 4 laravel laravel-5 laravel-validation laravel-5.2

我在Laravel 5.2中遇到了一个关于验证的奇怪问题.我在StackOverflow上回顾了以下问题,但它们似乎都不适用于我的案例:

Laravel验证未显示错误

Laravel验证不返回错误

问题是,title在将Card对象持久化到数据库之前,我正在尝试验证字段.当我title按照预期提交带有空字段的表单时,它不会通过验证.但是,在$errors上述验证失败时,阵列不会填充.任何人都可以解释我在这个代码中出错的地方吗?

/////////////////////// CONTROLLER /////////////////////
public function create(Request $request)
{
    $this->validate($request, [
        'title' => 'required|min:10'
    ]);

    Card::create($request->all());
    return back();
}
Run Code Online (Sandbox Code Playgroud)
///////////////////////// VIEW /////////////////////////
// Show errors, if any. (never gets triggered)
@if(count($errors))
    <ul>
        @foreach($errors->all() as $error)
            <li>{{ $error }}</li>
        @endforeach
    </ul>
@endif
Run Code Online (Sandbox Code Playgroud)
<form method="POST" action="/cards">
    {{ csrf_field() }}

    <div class="form-group">
        // The textarea does not get populated with the 'old' value as well
        <textarea class="form-control" name="title">{{ old('title') }}</textarea>
    </div>

    <div class="form-group">
        <button class="btn btn-primary" type="submit">Add Card</button>
    </div>
</form>
Run Code Online (Sandbox Code Playgroud)

Tho*_*Kim 21

如果您运行的是Laravel 5.2.27及更高版本,则不再需要使用Web中间件组.实际上,您不应将其添加到路线中,因为它现在默认情况下会自动应用.

如果你打开app/Http/RouteServiceProvider.php文件,你会看到这段代码:

protected function mapWebRoutes(Router $router)
{
    $router->group([
        'namespace' => $this->namespace, 'middleware' => 'web',
    ], function ($router) {
        require app_path('Http/routes.php');
    });
}
Run Code Online (Sandbox Code Playgroud)

资料来源:https://github.com/laravel/laravel/blob/master/app/Providers/RouteServiceProvider.php#L53

如您所见,它会自动为您应用Web中间件.如果您尝试在路径文件中再次(不止一次)应用它,您将遇到类似于您当前面临的奇怪问题.

要查找正在运行的Laravel版本,请运行以下命令: php artisan --version

  • 哦,我的上帝!我会花很多时间搞清楚这一点.非常感谢你! (2认同)