Validation Laravel MessageBag errors数组在视图中为空,但如果我杀死脚本,则包含内容

Validation Laravel MessageBag errors数组在视图中为空,但如果我杀死脚本,则包含内容,validation,laravel,Validation,Laravel,我试图将错误返回到我的视图,这是我的控制器TestcategoryController的一部分 $rules =array( 'name' => 'required' ); $validator = Validator::make(Input::all(), $rules); //process if($validator->fails()){ return Redirect::to('testcategory/

我试图将错误返回到我的视图,这是我的控制器TestcategoryController的一部分

    $rules =array(
        'name' => 'required'
    );
    $validator = Validator::make(Input::all(), $rules);
    //process
    if($validator->fails()){
        return Redirect::to('testcategory/create')->withErrors($validator);
    }
在视图
testcategory/create
中,如果我尝试输出以下错误

        @if($errors->any())         
            {{ $errors->first('name') }}
        @endif
我什么也得不到。但是如果我
{{dd($errors)}}
我得到

      object(Illuminate\Support\ViewErrorBag)#91 (1) { ["bags":protected]=> array(1) { 
      ["default"]=> object(Illuminate\Support\MessageBag)#92 (2) 
      { ["messages":protected]=>   array(1) 
      { ["name"]=> array(1) { [0]=> string(27) "The name field is required." } }  
      ["format":protected]=> string(8) ":message" } } }

我得到错误的唯一方法是我杀死脚本。我做错了什么?

如果在您的案例中没有得到任何结果,那么这意味着您已经用其他内容或空对象覆盖了$errors对象-请检查您传递给视图的代码和数据。您的代码是完全有效的,运行良好-我已经在本地进行了测试。也许,您将空$errors对象传递给了子视图,但在其他视图中使用了正确的对象。

您需要像这样使用它:

{{ $errors->getBag('default')->first('name') }}

另一个问题可能是$errors没有保存到会话变量$errors中,并且视图中没有显示任何内容

以下是同一问题的一个例子:

对我来说,上面链接中定义的解决方案有效。 解决方案:在app\Http\Kernel.php中 移动
\illumb\Session\Middleware\StartSession::class,
从$middlewareGroups到$Middleware

之前

之后


添加中间件,并解决了..

我在Laravel 8.0中遇到了同样的问题

我唯一能解决这个问题的方法是逐层输入错误包,直到我手动获得消息:

@if (count($errors->getBags()))
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->getBags() as $bag)
                @foreach ($bag->getMessages() as $messages)
                    @foreach ($messages as $message)
                        <li>{{ $message }}</li>
                    @endforeach
                @endforeach
            @endforeach
        </ul>
    </div>
@endif
@if(计数($errors->getBags())
    @foreach($errors->getBags()作为$bag) @foreach($bag->getMessages()作为$messages) @foreach($messages作为$message)
  • {{$message}}
  • @endforeach @endforeach @endforeach
@恩迪夫
如果我转储此脚本,它会显示错误,但如果我不转储并终止脚本,它不会显示在视图中。似乎使用自定义提交函数会覆盖错误包。@briankip我正在通过Javascript在
单击
按钮的方法上设置表单字段值。这就是我没有得到它的原因吗?很可能。但我必须查看代码才能确认。太棒了,你刚刚解决了我的问题!谢谢,巴迪:)我也面临同样的问题,但我认为在变量之间切换会话中间件之后,问题仍然存在。有什么想法吗?
@if (count($errors->getBags()))
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->getBags() as $bag)
                @foreach ($bag->getMessages() as $messages)
                    @foreach ($messages as $message)
                        <li>{{ $message }}</li>
                    @endforeach
                @endforeach
            @endforeach
        </ul>
    </div>
@endif