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

时间:2016-09-17 22:09:48

标签: php arrays laravel laravel-5.3

我正在尝试使用Laravel错误转储($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"
    }
  ]
}

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

@foreach($errors->all() as $error)
     <li>{{$error}}</li>
@endforeach

但我希望得到namerole_id。反正有没有实现这一目标?到目前为止,我已经尝试了以下和其他一些没有运气的方法。

@foreach ($errors->all() as $key => $value)
       Key: {{ $key }}
       Value: {{ $value }}
@endforeach

4 个答案:

答案 0 :(得分:6)

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

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

@foreach($errors->getMessages() as $key => $message)
    {{$key}} = {{$message}}
@endforeach

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

{{ $errors->first('name') }} // The name field is required.

在你使用类似的东西要求字段的任何错误之前检查是否明智:

@if($errors->has('name'))
    {{ $errors->first('name') }}
@endif

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

答案 1 :(得分:3)

使用

id

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

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

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

答案 2 :(得分:0)

遍历错误

@foreach($errors->getMessages() as $key => $message)
{{$key}} = {{$message[0]}}
@endforeach

答案 3 :(得分:0)

在 Laravel API 中有一个可用于 vector.end() 消息包的方法列表: https://laravel.com/api/master/Illuminate/Contracts/Support/MessageBag.html

您可以通过以下方式获取所有错误键的列表:

$error

或错误列表:

$error->keys()

或者特定错误的关键是:

$errors->all()