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

时间:2015-06-10 13:34:47

标签: php forms entity-framework symfony

我正在使用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.当我提交表单时,我有最后一个实体重复。这不是我想要的!

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

我该如何避免这种情况?有选择吗?

1 个答案:

答案 0 :(得分:0)

找到了解决方案。

在thr PRE_BIND事件中,我这样做:

$data["locations"] = array_values($data["locations"]);

这将消除数组中的间隙