Zend framework2 ZF2嵌套数据验证

Zend framework2 ZF2嵌套数据验证,zend-framework2,zend-form,zend-inputfilter,zend-form-fieldset,Zend Framework2,Zend Form,Zend Inputfilter,Zend Form Fieldset,我在试着做我的验证。我以如下格式将数据发布到控制器: [ 'property' => 'value', 'nested_property' => [ 'property' => 'value', // ... ] ] 我已将字段/过滤器和表单划分为不同的类,并将其聚集在表单的控制器中,如下所示: public function __construct($name, $options) { // ... $

我在试着做我的验证。我以如下格式将数据发布到控制器:

[
    'property' => 'value',
    'nested_property' => [
        'property' => 'value',
        // ...
    ]
]
我已将字段/过滤器和表单划分为不同的类,并将其聚集在表单的控制器中,如下所示:

public function __construct($name, $options)
{
    // ...
    $this->add(new SomeFieldset($name, $options));
    $this->setInputFilter(new SomeInputFilter());
}
但它不能正常工作,看起来它只是忽略了嵌套数组(或者忽略了所有内容)。我错过了什么


谢谢。

如果使用
inputfilter
类,则需要像设置表单(包括字段集)一样设置inputfilter

所以当你有这样一个结构:

  • MyForm
    1.1嵌套字段集
    1.2另一个字段集
  • 您的inputfilters需要具有相同的结构:

  • MyFormInputFilter
    1.1嵌套的FielsteInputFilter
    1.2另一个FieldSetInputFilter
  • 一些示例代码:

    类示例表单扩展表单
    {
    公共函数构造($name,$options)
    {
    //处理依赖关系
    父项::_构造($name,$options);
    $this->setInputFilter(新示例InputFilter());
    }
    公共函数init()
    {
    //表单中的某些字段
    $this->add(newsomefieldset('SomeFieldset'));
    }
    }
    类SomeFieldset扩展了Fieldset
    {
    公共函数_构造($name=null,数组$options=[]))
    {
    父项::_构造($name,$options);
    }
    公共函数init()
    {
    //一些领域
    }
    }
    类ExampleInputFilter扩展InputFilter
    {
    公共函数构造()
    {
    //为表单配置验证
    $this->add(新建SomeFieldsetInputFilter(),'SomeFieldset');
    }
    }
    类SomeFieldsetInputFilter扩展了InputFilter
    {
    公共函数构造()
    {
    //为SomeFieldset配置验证
    }
    }
    
    因此,为这些情况配置inputFilter的重要部分是,在
    inputFilter
    类中使用:
    $this->add($input,$name=null)
    时,需要重用字段集的名称