我和Zend就此问题开了一个ticket,但我希望能早点得到一些帮助。
我有一个带嵌套集合的表单。让我们说我提交给表单的数据在一个集合中有2个项目,带有一个额外的嵌套集合,如下所示:
array(
array(
'foo' => 'bazbat',
'bar' => '12345',
'baz' => '',
'nest' => array(
'foo' => 'foobar',
'bar' => '111111',
'baz' => '',
),
),
array(
'foo' => 'batbaz',
'bar' => '54321',
'baz' => '',
'nest' => array(
'foo' => 'foobat',
'bar' => '222222',
'baz' => '',
),
)
);
以上示例工作正常。但是,如果第二个集合没有“嵌套”输入(空集合),则第一个集合中的“嵌套”集合将添加到第二个集合中。
示例:
$form = new \Zend\Form\Form();
$form->setData(array(
array(
'foo' => 'bazbat',
'bar' => '12345',
'baz' => '',
'nest' => array(
'foo' => 'foobar',
'bar' => '111111',
'baz' => '',
),
),
array(
'foo' => ' batbaz ',
'bar' => '54321',
'baz' => '',
)
));
$form->isValid();
$data = $form->getData();
$ data看起来像
array(
array(
'foo' => 'bazbat',
'bar' => '12345',
'baz' => '',
'nest' => array(
'foo' => 'foobar',
'bar' => '111111',
'baz' => '',
),
),
array(
'foo' => ' batbaz ',
'bar' => '54321',
'baz' => '',
'nest' => array(
'foo' => 'foobar',
'bar' => '111111',
'baz' => '',
),
)
));
我几乎肯定问题是\ Zend \ InputFilter \ CollectionInputFilter,但我找不到一个好的解决方案。