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