我有一个安装/配置了 Doctrine 的 Zend Framework 2 项目。我直接在实体上使用 Zend Form 注释来生成表单来显示/编辑实体数据。我遇到了一个问题:
具有以多对多关系配置的子实体(区域)集合的实体(供应商)。教义关系工作正常,但是我添加了 zend 表单注释
/*
* ...doctrine annotations...
* @Annotation\Type("Zend\Form\Element\Collection")
* @Annotation\Options({"label":"Territory", "target_element": {"type": "\DocurepVendor\Form\TerritoryFieldset"}})
*/
创建我制作的字段集对象,但不要将字段名称命名为数组。(输入都命名为 city 而不是 city[])所以当我提交更新表单时,映射器需要一个数组,但只找到一个字符串并失败。
这是我的字段集代码。
TerritoryFieldset.php
namespace DocurepVendor\Form;
use \Zend\Form\Fieldset;
use \Zend\InputFilter\InputFilterProviderInterface;
class TerritoryFieldset extends Fieldset implements InputFilterProviderInterface {
public function __construct($name = null, $options = array()) {
parent::__construct('Locations', $options);
$this->setHydrator(new \Zend\Stdlib\Hydrator\ClassMethods())
->setObject(new \DocurepLocation\Entity\Territory());
$this->add(array(
'name' => 'city',
'options' => array(
'label' => 'City'
),
'attributes' => array()
))->add(array(
'name' => 'state',
'options' => array(
'label' => 'State'
),
'attributes' => array(
'required' => 'required'
)
));
}
public function getInputFilterSpecification() {
return array();
}
}
如果我将字段集中的名称设置为“city[]”而不是“city”,则字段集甚至不会填充教义数据。
我不确定这是否是我需要在子元素字段集、父元素的注释、其他地方完全配置的东西,或者这根本无法完成,我需要以另一种方式实现。有人可以推动我朝着正确的方向前进吗?