Подсчет проверки массива Laravel - PullRequest
0 голосов
/ 03 марта 2019

В моем приложении Laravel я пытаюсь проверить, что два моих массива в моем запросе суммируются с определенным числом.

array1 => [1],
array2 => [],

'arary1' =>  ['bail', Rule::requiredIf(function () {
    return count($this->array2) <= 1;
})],
'array2' =>  ['bail', Rule::requiredIf(function () {
    return count($this->array1) <= 2;
})],

Мой общий требуемый счет для массивов 1 и 2 равен 3. Для этого нужно взять счетчик массивов 1, умножить это число на 2 и затем добавить в массив массивов 2.

Таким образом, в приведенном выше примере моя проверка должна потерпеть неудачу, потому что (1 * 2) = 2 + 0 = 2, поэтому не равно 3.

Как будет построена эта проверка?

1 Ответ

0 голосов
/ 03 марта 2019

Вам нужно продлить правило 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'
    ...............
];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...