如何在laravel错误消息数组中获取错误键

Moh*_*hif 5 php arrays laravel laravel-5.3

我试图使用Laravel错误dump($errors)从数组中检索一个键.

该数组看起来像这样

ViewErrorBag {#169 ?
  #bags: array:1 [?
    "default" => MessageBag {#170 ?
      #messages: array:2 [?
        "name" => array:1 [?
          0 => "The name field is required."
        ]
        "role_id" => array:1 [?
          0 => "The role id field is required."
        ]
      ]
      #format: ":message"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

使用@foreach循环来获取错误消息正常.

@foreach($errors->all() as $error)
     <li>{{$error}}</li>
@endforeach
Run Code Online (Sandbox Code Playgroud)

但我想拿到namerole_id.反正有没有实现这一目标?到目前为止,我已经尝试了下面和其他一些没有运气的方法.

@foreach ($errors->all() as $key => $value)
       Key: {{ $key }}
       Value: {{ $value }}
@endforeach
Run Code Online (Sandbox Code Playgroud)

The*_*pha 7

这是因为,$errors->all()返回单个数组中所有字段的所有错误的数组(以数字方式索引).

如果你想循环并希望获得每key => value对,那么你可以尝试这样的事情:

@foreach($errors->getMessages() as $key => $message)
    {{$key}} = {{$message}}
@endforeach
Run Code Online (Sandbox Code Playgroud)

但是,您可以明确地从错误中获取项目,例如:

{{ $errors->first('name') }} // The name field is required.
Run Code Online (Sandbox Code Playgroud)

也许明智的做法是在你使用类似的东西询问字段的任何错误之前检查:

@if($errors->has('name'))
    {{ $errors->first('name') }}
@endif
Run Code Online (Sandbox Code Playgroud)

这将帮助您在错误所属的字段的顶部/底部显示每个错误.

  • 没关系.我直接在标签ID上使用了$ key.我想尝试打印出$ key是一个混乱的部分.非常感谢:D (2认同)

小智 6

@foreach($errors->getMessages() as $key => $error )
   Key: {{ $key }}
   Value: {{ $error[0] }}
@endforeach
Run Code Online (Sandbox Code Playgroud)

如果你 var_dump $error 的值,你会得到一个数组:

array(1) { [0]=> string(13) "Successfully!" }

因此您需要该数组的键(在我们的例子中为 0)来访问消息