0

如何更改显示集合的顺序,并按 FooBar 实体中的类别对它们进行分组。

$builder
    ->add('foobar', 'collection', array(
        'type' => new FooBarType()
    ));

query_builder 仅适用于实体,不适用于集合。所以它不是关于排序结果,而是关于基于 FooBarType 的类别的分组,并按该顺序显示它们。

喜欢:

[收藏]

第一类名称:[该类别的列表]

类别二名称:[具有该类别的列表]

视图现在显示集合,前面有类别名称:

{% for db in edit_form.foobar %}
    <li>[Category: {{ db.foobar.vars.data.name }}] 
    {{ form_widget(db.value) }}</li>
{% endfor %}    

我想按类别分组。因此它们按类别名称排序。

4

2 回答 2

0

这将有助于:

{% set category = '' %}
{% for db in edit_form.foobar %}
    <li>
        {% set currentCategory = db.foobar.vars.data.category.name %}
        {% if category != currentCategory  %}
            <p>{{ currentCategory }}</p>
            {% set category = currentCategory %}
        {% endif %}                                
        {{ form_widget(db.value) }}</li>
{% endfor %}

并像 Joao 所说的那样在您的实体中订购类别。

于 2013-06-19T13:04:06.877 回答
0

在您的实体中,在 oneToMany 或 ManyToMany 注释上,您可以添加以下内容:

/**
 * @ManyToMany(targetEntity="FooBar")
 * @OrderBy({"name" = "ASC"})
 */
private $foobar;

这样,当您在模板上循环 foobar 时,它们会按照您定义的内容进行排序和排序。

来源: http ://docs.doctrine-project.org/en/2.0.x/reference/annotations-reference.html#annref-orderby

于 2013-06-18T15:06:20.950 回答