如果 Laravel 中的其他字段为零,则需要大于零

Require greater than zero if other field is zero in Laravel

我有两个数字文本字段:

<input type="number" name="amount_1">
<input type="number" name="amount_2">

我需要验证它们,其中至少有一个值至少为 1。

我目前在验证中有这个:

'amount_1' => 'required_unless:amount_2,0',
'amount_2' => 'required_unless:amount_1,0',

使用上面的代码,如果两个字段中的任何一个的值为 1,我没有看到错误消息,这是正确的。但如果它们都是 0 值,我没有错误消息。

我需要的是如果另一个文本框的值为 0,则另一个文本框的值至少为 1。

如果两者的值都至少为 1,那也没问题。

这可能吗?

使用 custom validation rule:

假设您的应用程序是 one-off,使用 closure 可能是最简单的:

use Illuminate\Support\Facades\Validator;

$validator = Validator::make($request->all(), [
    'amount_1' => function ($attribute, $value, $fail) use ($request) {
        if ($value + $request->input('amount_2') <= 0) {
            $fail('Amount 1 or Amount 2 must be more than 0');
        }
    },
]);