当缺少表单索引时,Symfony2复制集合实体


Symfony2 duplicates collection entities when form index is missing

我使用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
));

我使用多对多关系和额外的字段,所以我使用多对一和一对多

它像我想要的那样工作。可以创建新的实体。为了删除实体,我提供了一个AJAX函数,该函数从DB中删除条目并删除表单中相应的HTML部分。

当集合中有2个实体时,删除第一个并且不重新加载表单,表单剩下一个实体元素。但是这个的指标是1而不是0。当我提交表单时,我复制了最后一个实体。这不是我想要的!

只有当我删除第一个位置时才会出现问题,所以只有当存在"索引间隙"时才会出现问题。

我怎样才能避免这种情况?有别的选择吗?

找到解决办法了

在PRE_BIND事件中,我这样做:
$data["locations"] = array_values($data["locations"]);

从数组中删除空格