0

当另一个字段具有值(非空)时,我试图排除一个字段被验证。在这种情况下,如果 product_pictures 是一个数组(非空),我希望排除“deleted_pictures”。我的问题是,我认为exclude_unless:product_pictures,null评估nullstring,而不是null

这是我的规则。

ProductRequest.php

return [
    'product_pictures.*' => 'required_with:product_pictures|file|max:2048|mimes:jpeg,jpg,png',
    'product_pictures' => 'sometimes|array',
    'deleted_pictures' => ['exclude_unless:product_pictures,null', 'required', new cant_delete_all($max,'1')],
];
read : exclude deleted_pictures unless product_pictures has a value of 'null'

我试过这个来证实我的怀疑,它应该像它一样工作。

//test_field = 'some_value'
return [
    'test_field' => 'required|string'
    'product_pictures.*' => 'required_with:product_pictures|file|max:2048|mimes:jpeg,jpg,png',
    'product_pictures' => 'sometimes|array',
    'deleted_pictures' => ['exclude_unless:test_field,some_value', 'required', new cant_delete_all($max,'1')],
];
read : exclude deleted_pictures unless test_field has a value of 'some_value'

在我的第一种情况下,deleted_pictures 被排除在外,因为它没有检测到 product_pictures 为“null”(字符串)

在第二种情况下,不排除 deleted_pictures ,因为 test_field 与给定值匹配。

我的问题是,你如何评估nullFormRequest Laravel 中的价值?

4

1 回答 1

1

因此,显然您可以将第二个参数留空以将其评估为 null

return [
    'product_pictures.*' => 'required_with:product_pictures|file|max:2048|mimes:jpeg,jpg,png',
    'product_pictures' => 'sometimes|array',
    'deleted_pictures' => ['exclude_unless:product_pictures,', 'required', new cant_delete_all($max,'1')],
];

我不确定这是它应该如何完成或预期的行为。但我只是要留下这个答案,以防万一有人需要它。如果有人可以建议“正确”的做法,那么我会接受。

于 2020-07-31T08:43:00.923 回答