动态添加元素后,ZF2刷新输入过滤器

时间:2013-06-03 12:17:26

标签: forms dynamic zend-framework2 zend-inputfilter

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

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

或者我应该延迟致电$form->getInputFilter(),直到所有的元素都已添加到表单中?

2 个答案:

答案 0 :(得分:3)

我还在后面的表单中添加了一些元素,输入过滤器忽略了这些元素 我的解决方案很可能不是最好的解决方案,但是由于你还没有收到任何其他答案,这就是我所做的:

我添加了      use Zend\InputFilter\Factory as InputFactory;

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

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

答案 1 :(得分:0)

@ Afterdark017工作,我认为可以重置过滤器。

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

但我还没有测试过。