zend 2 表单验证器组

zend 2 forms validatator groups

我正在使用 getInputFilterSpecification() 来验证我的表单元素,即

public function getInputFilterSpecification()
    {
        return array(
           'comment' => array(
            'required' => true,
            'filters'  =>array(
            array('name'=>'StripTags'),
            array('name'=>'StringTrim'),
        ),
        'validators' => array(
            array(
                'name'    => 'StringLength',
                    'options' => array(
                    'encoding' => 'UTF-8',
                    'min'      => 1,
                    'max'      => 500,
                    ),
                ),
            ),
        ),
    'name' => array(
            'required' => true,
            'filters'  =>array(
            array('name'=>'StripTags'),
            array('name'=>'StringTrim'),

        ),
        'validators' => array(
            array(
                'name'    => 'StringLength',
                    'options' => array(
                    'encoding' => 'UTF-8',
                    ),
                ),
            ),
        ),
    }

我的问题是:与其对表单中的每个单独元素重复相同的验证器,不如将所有元素集中到一个数组中并让验证器遍历它们。

即像这样的东西:

$validateThisGroup  =  $inputFilter->setValidationGroup(array('comment', 'name'));

        return array(
            $validateThisGroup => array(
                'required' => true,
                'filters'  =>array(
                array('name'=>'StripTags'),
                array('name'=>'StringTrim'),
            ),
            'validators' => array(
                array(
                    'name'    => 'StringLength',
                        'options' => array(
                        'encoding' => 'UTF-8',
                        'min'      => 1,
                        'max'      => 500,
                        ),
                    ),
                ),
            ),

更新;

我改写了我的问题。我基本上是想找出输入过滤器规范函数是否有验证器组函数。

不确定我的建议是否值得作为一个完整的答案,但无论如何 :)

需要为每个输入单独创建验证器,它们是由 InputFilter 的插件管理器创建的独立有状态实例,因此您需要为每个输入传递单独的验证器定义。

如果您只想避免复制粘贴,请在 returning 之前定义验证器定义并将其插入 return 数组。

    $inputValidatorsSpec = [
        [
            'name' => 'StringLength',
            'options' => [
                'encoding' => 'UTF-8',
                'min' => 1,
                'max' => 500,
            ],
        ],
    ];

    $inputFiltersSpec = [
        ['name' => 'StripTags'],
        ['name' => 'StringTrim'],
    ];

    return [
        'comment' => [
            'required' => true,
            'filters' => $inputFiltersSpec,
            'validators' => $inputValidatorsSpec
        ],
        'name' => [
            'required' => true,
            'filters' => $inputFiltersSpec,
            'validators' => $inputValidatorsSpec
        ]
    ];