我正在尝试使用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
但我希望得到name
和role_id
。反正有没有实现这一目标?到目前为止,我已经尝试了以下和其他一些没有运气的方法。
@foreach ($errors->all() as $key => $value)
Key: {{ $key }}
Value: {{ $value }}
@endforeach
答案 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()