Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel中的验证错误-$errors数组在验证失败后未填充_Laravel_Laravel 5_Laravel 5.2_Laravel Validation - Fatal编程技术网

Laravel中的验证错误-$errors数组在验证失败后未填充

Laravel中的验证错误-$errors数组在验证失败后未填充,laravel,laravel-5,laravel-5.2,laravel-validation,Laravel,Laravel 5,Laravel 5.2,Laravel Validation,我在Laravel5.2中遇到了一个关于验证的奇怪问题。我回顾了有关StackOverflow的以下问题,但似乎没有一个适用于我的案例: 问题是,在将卡片对象持久化到数据库之前,我正在尝试验证标题字段。当我提交带有空title字段的表单时,正如预期的那样,它不会通过验证。但是,$errors数组不会在上述验证失败时填充。有人能解释一下我的代码哪里出了问题吗 //控制器///////////////////// 公共函数创建(请求$Request) { $this->validate$请求[

我在Laravel5.2中遇到了一个关于验证的奇怪问题。我回顾了有关StackOverflow的以下问题,但似乎没有一个适用于我的案例:

问题是,在将
卡片
对象持久化到数据库之前,我正在尝试验证
标题
字段。当我提交带有空
title
字段的表单时,正如预期的那样,它不会通过验证。但是,
$errors
数组不会在上述验证失败时填充。有人能解释一下我的代码哪里出了问题吗

//控制器/////////////////////
公共函数创建(请求$Request)
{
$this->validate$请求[
“title'=>”必填项|最小值:10”
]);
卡片::创建($request->all());
返回();
}
//视图/////////////////////////
//显示错误(如果有)。(从不触发)
@如果(计数($errors))
    @foreach($errors->all()作为$error)
  • {{$error}}
  • @endforeach
@恩迪夫

{{csrf_field()}}
//textarea也不会填充“old”值
{{old('title')}
添加卡

我想您必须将if子句设置为
@if(count($errors)>0)
在控制器中,尝试添加
$validator->fails()
语句,并使用
->withErrors()
将任何错误返回到模板中

public function create(Request $request)
{
    $validator = Validator::make($request->all(), [
        'title' => 'required|min:10'
    ]);

    if ($validator->fails()) {
        return back()->withErrors($validator);
    }

    Card::create($request->all());
    return back();
}

如果您正在运行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');
    });
}
资料来源:

如您所见,它会自动为您应用web中间件。如果您尝试在routes文件中再次(不止一次)应用它,您将遇到一些奇怪的问题,比如您当前所面临的问题


为了找出您正在运行的Laravel的版本,请运行以下命令:
php artisan--version
@if(count($errors))
@if(count($errors)>0)
是否可以附加
routes.php
文件以及完整的控制器文件?不知何故,我相信会发生一些双重重定向,并且您的
$errors
不会从一个重定向传递到另一个重定向。或者,如果您使用的是restful路由,
create
方法不是放置存储函数的地方-
store
是放置存储函数的地方。@GiedriusKiršys问题确实出在路由文件中,因为我两次包含了“web”中间件组(正如公认的答案所指出的)。谢谢你给我的关于休息路线的建议,我会记住的。哦,我的上帝!我会花很多时间来弄清楚的。非常感谢你!谢谢你的回复。结果是一样的,但是被接受的答案解决了我的问题