基于位置字段对CollectionType的视图进行排序

时间:2013-08-29 12:00:22

标签: symfony doctrine-orm symfony-2.1

我有一个BookEntity(Name,Descript,...),与TagEntity(名称,位置)有一个OneToMany关系

标签只链接到一个BookEntity,而BookEntity可以有多个标签,但也可以保持标签按显式顺序排序。

为此,我使用了一个Drag& Drop javascript插件,以便将隐藏在TagType中的输入字段设置为嵌入

$builder->add('tags','collection', array(
    'type' => new TagType(),
    'allow_add' => true,
    'by_reference' => false,
    'prototype'   => true,
    'allow_delete' => true)
);

我可以使用原型添加新标签。

但我有现有标签,我将进入BookType的编辑页面。

如何指定TagType的顺序?

非常感谢

2 个答案:

答案 0 :(得分:2)

引用this issuethis one您可以使用doctrine的@OrderBy注释来从数据库中获取标记。这也会影响表单集合渲染。

/**
 * @ORM\ManyToMany(targetEntity="Tag")
 * @ORM\OrderBy({"position" = "ASC"})
 */
protected $tags;

就像快速提醒一样,您可以按照my answer here中的说明在控制器中订购已经提取的集合。

答案 1 :(得分:2)

您可以在树枝视图中进行排序:

{% for thing in somethings|sort('ThingIdColum') %}