0

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

$form->getInputFilter()在将此字段集添加到表单之前进行了调用,似乎调用$form->getInputFilter()dosn 不会为新添加的元素创建过滤器。那么如何在不重新创建孔过滤器的情况下为动态事件创建输入过滤器呢?

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

4

2 回答 2

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'),
    ),  
)));
于 2013-08-26T22:52:33.893 回答
0

@Afterdark017 有效,而且我认为可以重置过滤器。

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

但我还没有测试过这个。

于 2013-11-21T12:14:43.823 回答