Laravel嵌套数组验证消息

时间:2018-11-12 21:47:26

标签: laravel validation

我有一个需要验证的嵌套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.

3 个答案:

答案 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