我有一个需要验证的嵌套json数组。我正在尝试为数组中的字段提供自定义验证消息。我浏览了文档和一些帖子,但仍然无法弄清楚。我指定的规则是:
return [
'member_id' => 'required|exists:member,id',
'payment_method' => 'required',
'items.*.products.*.id' => 'required|exists:product,id',
'items.*.products.*.quantity' => 'required|integer|min:1',
'items.*.packages.*.id' => 'required|exists:package,id',
'items.*.packages.*.quantity' => 'required|integer|min:1'
];
在我的消息功能中
public function messages(){
return [
'custom' => [
'items.*.products.*.id' => [
'required' => 'Product ID is required.',
'exists' => 'Selected product invalid.',
],
],
];
}
但是我的验证消息仍然是:
The selected items.0.products.0.id is invalid.
答案 0 :(得分:0)
您是否尝试过不使用custom
键,就像这样:
public function messages(){
return [
'items.*.products.*.id' => [
'required' => 'Product ID is required.',
'exists' => 'Selected product invalid.',
]
];
}
答案 1 :(得分:0)
尝试一下:
public function messages(){
return [
'items.*.products.*.id.required' => 'your message here',
'items.*.products.*.id.exists' => 'your message here',
'items.*.products.*.id.exists' => 'your message here',
'items.*.products.*.quantity.required' => 'your message here',
'items.*.products.*.quantity.integer' => 'your message here',
'items.*.products.*.quantity.min' => 'your message here',
// etc... you get the idea
];
}
请参阅:https://laravel.com/docs/5.7/validation#custom-error-messages 为给定属性指定自定义消息
答案 2 :(得分:0)
您可以仅定义自定义的属性名称,而不是很多自定义消息!
public function attributes()
{
return [
'items.*.products.*.id' => 'product',
'items.*.products.*.quantity' => 'product quantity',
'items.*.packages.*.id' => 'package',
'items.*.packages.*.quantity' => 'package quantity',
];
}
您的验证消息为:The selected product is invalid.
请参阅:https://laravel.com/docs/5.8/validation#customizing-the-validation-attributes