Laravel阵列验证计数

问题描述 投票:0回答:1

在我的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。

如何构建此验证?

laravel laravel-5
1个回答
1
投票

你需要扩展规则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'
    ...............
];
© www.soinside.com 2019 - 2024. All rights reserved.