在我的Laravel应用程序中,我正在尝试验证我的请求中的两个数组是否与特定数字相加。
array1 => [1],
array2 => [],
'arary1' => ['bail', Rule::requiredIf(function () {
return count($this->array2) <= 1;
})],
'array2' => ['bail', Rule::requiredIf(function () {
return count($this->array1) <= 2;
})],
我对array1和array 2的总需要数是3.我需要的是获取array1的数量并将该数乘以2然后加入count array2。
所以在上面的例子中,我的验证应该失败,因为(1 * 2)= 2 + 0 = 2因此不等于3。
如何构建此验证?
你需要扩展规则https://laravel.com/docs/5.7/validation#using-extensions
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Validator;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
Validator::extend('array_count', function ($attribute, $value, $parameters, $validator) {
$data = $validator->getData();
$array1 = array_get($data, 'array1', []);
$array2 = array_get($data, 'array2', []);
return 3 == 2 * count($array1) + count($array2)
});
}
........
}
用法
$rules = [
'arary1' => 'array_count'
...............
];