我使用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"]);
从数组中删除空格