使用排序和删除的Sonata Admin Collection

时间:2013-10-18 00:41:37

标签: symfony sonata-admin symfony-sonata

我正在尝试将sonata_type_collection字段用于与食谱相关的成分列表。遇到两个问题:

  1. sortable参数适用于拖放重新排序,但我无法获取项目 实际按该列排序的关联。

  2. 删除复选框无法删除关联。

  3. 关联是ManyToOne,因为参考表的数据不仅仅是对Recipe表的简单引用,否则我会使用ManyToMany

    sortable参数运行良好,使行可拖动,但该列的成分列表不是排序。因此,虽然它保存了position列,但它实际上并没有按顺序显示它们。

    我试图找到一种简单的方法来挂钩PersistentCollection以过滤它。我发现matching()函数有效,但它没有修改底层集合,它只返回ArrayCollection。这不起作用,因为我无法用PersistentCollection替换ArrayCollection

    此外,删除功能无法开箱即用。我不得不手动覆盖RecipeAdmin::preUpdate($object)并手动删除已删除的成分并刷新实体管理器。

    我觉得应该有一个更简单的方法来做这一切。

    更新:我今天发现@OrderBy注释解决了排序问题

1 个答案:

答案 0 :(得分:2)

始终确保在OneToMany字段定义中设置orphanRemoval = true,否则删除复选框将无效。