Forms ZF2在向窗体动态添加元素后刷新输入筛选器

Forms ZF2在向窗体动态添加元素后刷新输入筛选器,forms,dynamic,zend-framework2,zend-inputfilter,Forms,Dynamic,Zend Framework2,Zend Inputfilter,我有一个表单,它在\u construct方法中的事件中触发,以从另一个模块加载一些项。到目前为止,一个字段集从另一个模块加载并添加到表单中,request->getPost()我有字段集内元素的数据,但是$form->getData()没有字段集的数据 在将此字段集添加到表单之前,我正在调用$form->getInputFilter(),似乎调用$form->getInputFilter()不会为新添加的元素创建过滤器。那么,如何为动态事件创建inputfilters而不重新创建孔过滤器呢 或

我有一个表单,它在
\u construct
方法中的事件中触发,以从另一个模块加载一些项。到目前为止,一个字段集从另一个模块加载并添加到表单中,
request->getPost()
我有字段集内元素的数据,但是
$form->getData()
没有字段集的数据

在将此字段集添加到表单之前,我正在调用
$form->getInputFilter()
,似乎调用
$form->getInputFilter()
不会为新添加的元素创建过滤器。那么,如何为动态事件创建inputfilters而不重新创建孔过滤器呢


或者我应该延迟调用
$form->getInputFilter()
直到所有元素都添加到表单中吗?

我后来还向表单中添加了一些被输入过滤器忽略的元素。
我的解决方案很可能不是最好的,但由于您尚未收到任何其他答案,以下是我所做的:

我加了
使用Zend\InputFilter\Factory作为InputFactory

在类中,我验证表单数据,然后使用

$factory = new InputFactory(); 
$form->getInputFilter()->add($factory->createInput(array(
    'name'     => 'title_str',
    'required' => true,
    'filters'  => array(
         array('name' => 'Int'),
    ),  
)));

后来我还在表单中添加了一些被输入过滤器忽略的元素。
我的解决方案很可能不是最好的,但由于您尚未收到任何其他答案,以下是我所做的:

我加了
使用Zend\InputFilter\Factory作为InputFactory

在类中,我验证表单数据,然后使用

$factory = new InputFactory(); 
$form->getInputFilter()->add($factory->createInput(array(
    'name'     => 'title_str',
    'required' => true,
    'filters'  => array(
         array('name' => 'Int'),
    ),  
)));

@Afterdark017工作正常,而且我认为可以重置过滤器

protected function resetFilters(){
    $this->filter = null;
    $this->hasAddedInputFilterDefaults = false;
}

但我还没有对此进行测试。

@Afterdark017正常工作,而且我认为可以重置过滤器

protected function resetFilters(){
    $this->filter = null;
    $this->hasAddedInputFilterDefaults = false;
}

但我还没有对此进行测试。

这是可行的,而且我认为可以重置过滤器。这是可行的,而且我认为可以重置过滤器。