Php 如何使laravel自定义验证程序比较两个数组值?
我正在尝试使用扩展创建一个自定义验证器,它将是数组中对象的一部分。验证规则如下:Php 如何使laravel自定义验证程序比较两个数组值?,php,laravel,validation,Php,Laravel,Validation,我正在尝试使用扩展创建一个自定义验证器,它将是数组中对象的一部分。验证规则如下: $this->validate($request, [ '*.odds' => 'required', '*.outcome_id' => 'required|oddIs:*.odds' ]); 因此,规则将获取结果id的值,并将其赔率属性与输入中的赔率进行比较 Validator::extend('oddIs', function($attribute, $value, $pa
$this->validate($request, [
'*.odds' => 'required',
'*.outcome_id' => 'required|oddIs:*.odds'
]);
因此,规则将获取结果id的值,并将其赔率属性与输入中的赔率进行比较
Validator::extend('oddIs', function($attribute, $value, $parameters, $validator) {
$outcome = Outcome::find($value);
return $outcome->odds == array_get($validator->getData(), $parameters[0]);
});
正如你们所看到的,我正试图让astrike能够正常工作。但是我找不到一种方法来解析属性名并生成一个具有相对索引的键
简言之,我正在寻找的解决方案是验证并比较两个字段,这两个字段将嵌套在数组中
仅供参考:验证数据将作为JSON提供
类似的问题可能适用于较旧版本的laravel:
在阅读了源代码之后,可以使用extendDependent()方法完成这项工作。主文档中没有对其进行记录。将验证扩展代码更改为以下将所有参数更改为相对键
Validator::extendDependent('oddIs', function($attribute, $value, $parameters, $validator) {
$outcome = Outcome::find($value);
return $outcome->odds == array_get($validator->getData(), $parameters[0]);
});