首页 > 解决方案 > Laravel 验证,如果另一个字段为 0,则该字段应为 1,反之亦然

问题描述

假设,我有一个请求对象发送

[
 a => 0,
 b => 0
]

我想要进行验证,这将导致错误,因为 a 和 b 都是 0。我至少需要一个为 1。我该怎么做?另一个工作例如:

[
 a => 0,
 b => 1
]

它应该通过

标签: laravellaravel-5

解决方案


您可以针对这种特殊情况使用自定义规则。

$request->validate([
    'a' => [
        'integer',
        'between:0,1',
        function ($attribute, $value, $fail) use ($request) {
            if (!$value && !$request->b) {
                $fail($attribute.' is invalid.'); //you can customize the message here
            }
        }
    ],
    'b' => 'integer|between:0,1'
]);

该规则只能是一个,因此用户不会收到 2 个错误消息。


推荐阅读