我已经向 Zend 开了一张关于这个问题的票,但我希望能尽快得到一些帮助。
我有一个带有嵌套集合的表单。假设我提交给表单的数据在一个集合中有 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 上,但我一直没能找到好的解决方案。