我正在使用Symfony 2及其表单组件来管理一些关系。
$builder->add('locations', 'collection', array(
'type' => new LocationType(),
'options' => array("em" => $this->em),
"allow_add" => true,
"by_reference" => false,
"allow_delete" => true,
"delete_empty" => true
));
我与额外的字段使用了很多2个关系,因此我使用多对一和一对多
它的工作方式与我想要的一样。可以创建新实体。为了删除实体,我提供了一个AJAX函数,它从数据库中删除项目并删除表单的相应HTML部分。
当我在集合中有2个实体时,删除第一个实体并且不重新加载表单,表单剩下一个实体元素。但是这个有索引1而不是0.当我提交表单时,我有最后一个实体重复。这不是我想要的!
问题只发生在我删除第一个位置时,所以只有在存在“索引间隙”时才会出现。
我该如何避免这种情况?有选择吗?
答案 0 :(得分:0)
找到了解决方案。
在thr PRE_BIND事件中,我这样做:
$data["locations"] = array_values($data["locations"]);
这将消除数组中的间隙