Php Laravel验证规则“;不同的;

Php Laravel验证规则“;不同的;,php,laravel,validation,Php,Laravel,Validation,我很难理解这个验证规则。基本上,我有两个字段,它们都是可为空的。但是,一旦两个字段都被填充,它们就必须彼此不同。例如,我不能在这两个选项中都输入test。如果我同时填写两个字段,则此验证规则有效 但是,当我只填写一个字段时,验证失败,并显示以下消息,说明这些字段应该彼此不同: The name and replace must be different. 我检查了提交给我的表单请求的内容,如下所示: "name" => null "replace" => "test" 我的验证规

我很难理解这个验证规则。基本上,我有两个字段,它们都是可为空的。但是,一旦两个字段都被填充,它们就必须彼此不同。例如,我不能在这两个选项中都输入
test
。如果我同时填写
两个
字段,则此验证规则有效

但是,当我只填写一个字段时,验证失败,并显示以下消息,说明这些字段应该彼此不同:

The name and replace must be different.
我检查了提交给我的表单请求的内容,如下所示:

"name" => null
"replace" => "test"
我的验证规则的精简版本:

public function rules()
{
    return [
        'name' => 'different:replace|nullable',
        'replace' => 'different:name|nullable',
    ];
}

有人能解释一下我对这个验证规则的误解吗?
null
值不计入此规则吗?

如果您查看
illumb\Validation\Concerns\ValidatesAttributes
中的
validateDifferent
函数(
供应商/laravel/framework/src/illumb/Validation/Concerns/ValidatesAttributes.php:432
)规则:

正如您在if案例中看到的,如果另一个值为null,则规则将失败

if (is_null($other) || $value === $other)

如果您查看
illumb\Validation\Concerns\validateAttribute
vendor/laravel/framework/src/illumb/Validation/Concerns/validateAttribute.php:432
)中的
validateDifferent
函数,规则:

正如您在if案例中看到的,如果另一个值为null,则规则将失败

if (is_null($other) || $value === $other)

我应该在那里查一下。。至少学到了一些新的东西,谢谢:)@Hardist Np祝你有愉快的一天!:)我应该在那里查一下。。至少学到了一些新的东西,谢谢:)@Hardist Np祝你有愉快的一天!:)