首页 > 解决方案 > Laminas CollectionInputFilter - 验证最小/最大项目数

问题描述

我想验证CollectionInputFilter中项目的最小/最大计数。我的代码是:

<?php

declare(strict_types=1);

use Laminas\InputFilter;
use Laminas\Validator;

include_once __DIR__ . '/vendor/autoload.php';

$config = [
    'items' => [
        'required' => true,
        'type' => InputFilter\CollectionInputFilter::class,
        'input_filter' => [
            'id' => [
                'required' => true,
            ],
        ],
        'validators' => [
            [
                'name'    => Validator\IsCountable::class,
                'options' => [
                    'max' => 1,
                ],
            ],
        ],
    ],
];

$data = [
    'items' => [
        [
            'id' => 'foo',
        ],
        [
            'id' => 'bar',
        ],
    ],
];

$factory = new InputFilter\Factory();

$inputFilter = $factory->createInputFilter($config);
$inputFilter->setData($data);

var_dump($inputFilter->isValid()); // outputs true

但是CollectionInputFilter/InputFilterInterface本身没有经过验证

任何建议如何验证通过的最小/最大计数$data

标签: laminas

解决方案


推荐阅读