【问题标题】:Laravel Array Validation CountsLaravel 数组验证计数
【发布时间】:2019-03-04 00:31:10
【问题描述】:

在我的 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,然后添加计数 array2。

所以在上面的例子中我的验证应该失败,因为 (1*2) = 2 + 0 = 2 所以不等于 3。

如何构建此验证?

【问题讨论】:

  • 您可以使用count() 函数计算数组计数,然后检查总和。 count($array1)*2 + count($array2) 应该等于 3 才能通过验证
  • 这将如何与 Laravel 框架一起使用?

标签: laravel laravel-5


【解决方案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'
    ...............
];

【讨论】:

  • 感谢您的快速回复。我已经用现有的验证规则更新了我的帖子。
  • @JeffreyDavidson 在 extebd 规则中,我展示了如何获取 $array1$array2 值。
猜你喜欢
  • 2018-01-03
  • 1970-01-01
  • 2015-08-17
  • 2019-10-21
  • 1970-01-01
  • 1970-01-01
  • 2021-07-24
  • 2019-02-21
  • 1970-01-01
相关资源
最近更新 更多