Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
FormBuilder Symfony2中的分组集合_Symfony - Fatal编程技术网

FormBuilder Symfony2中的分组集合

FormBuilder Symfony2中的分组集合,symfony,Symfony,如何更改集合的显示顺序,并按FooBar实体中的类别对它们进行分组 $builder ->add('foobar', 'collection', array( 'type' => new FooBarType() )); 查询生成器仅适用于实体,而不适用于集合。因此,这不是对结果进行排序,而是基于FooBarType的类别进行分组,并按顺序显示它们 比如: [收集] 类别一名称:[与该类别一起列出] 类别二名称:[与该类别一起列出] 视图现在显示集合

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

$builder
    ->add('foobar', 'collection', array(
        'type' => new FooBarType()
    ));
查询生成器仅适用于实体,而不适用于集合。因此,这不是对结果进行排序,而是基于FooBarType的类别进行分组,并按顺序显示它们

比如:

[收集]

类别一名称:[与该类别一起列出]

类别二名称:[与该类别一起列出]

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

{% for db in edit_form.foobar %}
    <li>[Category: {{ db.foobar.vars.data.name }}] 
    {{ form_widget(db.value) }}</li>
{% endfor %}    
{%for db in edit_form.foobar%}
  • [类别:{db.foobar.vars.data.name}] {{form_小部件(db.value)}
  • {%endfor%}

    我想按类别对其进行分组。因此,它们是按类别名称排序的。

    在实体中,在一个域或多个注释上,您可以添加以下内容:

    /**
     * @ManyToMany(targetEntity="FooBar")
     * @OrderBy({"name" = "ASC"})
     */
    private $foobar;
    
    这样,当您在模板上循环foobar时,它们将按照您定义的顺序排序

    资料来源: 这将有助于:

    {% 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 %}
    
    {%set category=''%}
    {edit_form.foobar%}
    
  • {%set-currentCategory=db.foobar.vars.data.category.name%} {%if类别!=currentCategory%} {{currentCategory}}

    {%set category=currentCategory%} {%endif%} {{form_小部件(db.value)}
  • {%endfor%}

    然后像Joao说的那样在实体中订购类别。

    是的,这是为了订购。我的问题是关于GroupBy的。我要显示的集合是一个列表,列表中有多个类别。