Sonata Admin 编辑表单多对多不起作用 - symfony2.1.6

Posted

技术标签:

【中文标题】Sonata Admin 编辑表单多对多不起作用 - symfony2.1.6【英文标题】:Sonata Admin edit form many to many not working - symfony2.1.6 【发布时间】:2012-12-26 12:36:50 【问题描述】:

在奏鸣曲管理编辑表单中实现多对多关系时遇到问题,结构如下。

purchase (id, total_price, discount, created_at)
purchase_product (purchase_id, product_id, quantity)
product (id, title, desc, price, thumbnail, created_at)

我已经看到了很多线程并尝试了其中列出的解决方案。我试过了

->add('products', 'sonata_type_model', array('by_reference' => false))

我收到以下错误

No entity manager defined for class Doctrine\ORM\PersistentCollection 

然后当我找不到解决这个问题的方法时,我切换到了

->add('products', 'sonata_type_collection', array(), array('edit' => 'inline', 'inline' => 'table')

我收到以下错误

INVALID MODE type : sonata_type_collection - mapping : 8 

我也无法弄清楚如何从 purchase_product 表中获取和显示数量。

非常感谢任何指针和帮助。

【问题讨论】:

【参考方案1】:

您可以尝试添加 'expanded' => true 和 'multiple' => true

->add('products', 'sonata_type_model', array('expanded' => true, 'by_reference' => false, 'multiple' => true))

【讨论】:

谢谢丹尼尔,有没有办法我可以加载最后一个关联产品及其详细信息,而不是加载所有带有复选框的产品 - 我还需要显示 purchase_product 中的数量表(链接表) - 有什么办法吗?

以上是关于Sonata Admin 编辑表单多对多不起作用 - symfony2.1.6的主要内容,如果未能解决你的问题,请参考以下文章

在 Sonata Admin 的列表视图(角色/权限)中编辑

Sonata Admin Bundle 和 Doctrine 问题:如何从反面更新实体?

如何在 Sonata Media Bundle 中实现多对多关系

Django Admin批量编辑多对多关系

Sonata admin 一对多和多对一显示列表

Django admin - 如何在自定义管理表单中为多对多字段添加绿色加号