【问题标题】:How to edit an Array field in "Sonata Admin" with Symfony2如何使用 Symfony2 在“Sonata Admin”中编辑数组字段
【发布时间】:2026-02-08 22:25:01
【问题描述】:

对于 Symfony2,我使用“FOSuserBundle”。在我的实体“组”中,我有一个名为“角色”的数组列。这是“ArrayCollection”类型。当我想创建或编辑“组”时,如何使用“奏鸣曲管理员”等管理生成器编辑此字段“角色”。

我尝试使用“sonata_type_collection”类型但没有成功。

您有说明如何执行此操作的示例或链接吗?

PS:“角色”在 MySQL 的 Group 表中使用“DC2Type:array”。

【问题讨论】:

    标签: symfony code-generation admin fosuserbundle sonata-admin


    【解决方案1】:

    警告编辑:我不再使用 Sonata,@romain-bruckert comment might be better


    我认为你需要依赖SonataAdmin field types

    • 数组:显示数组中的值
    • boolean:根据布尔值显示绿色或红色图片,该类型接受editable参数来编辑 列表或显示操作中的值
    • 日期:显示格式化的日期。接受可选的format 参数
    • datetime:显示格式化的日期和时间。接受可选的format 参数
    • 文字:显示文字
    • trans:使用提供的catalogue 选项翻译值
    • 字符串:显示文本
    • 十进制:显示一个数字
    • 货币:使用提供的currency 选项显示数字
    • 百分比:显示百分比
    • 选择:使用给定值作为choices 数组的索引并显示(并可选择转换)匹配值
    • url:显示链接

    因此,对于您的 ArrayCollection,数组类型可能会很好。

    【讨论】:

    • 此答案已被接受,但 SonataAdmin 字段类型仅用于显示和列表操作......不用于编辑。编辑是如何实现的?
    • @caponica:为此,您需要依赖Sf Form component Types Reference,因为 Sonata 正在对其进行扩展。
    • 谢谢,@LaurentG - 我还在另一个线程上从 Gustek 那里得到了一些帮助:*.com/questions/21817255/…
    • 正如所指出的,这个答案是错误的。而且您应该用户“选择”角色(另请参阅我对主题*.com/questions/15050576/… 的回答和研究)