如何更改显示集合的顺序,并按FooBar实体中的类别对其进行分组。
$builder
->add('foobar', 'collection', array(
'type' => new FooBarType()
));
query_builder仅适用于实体,而不适用于集合。所以它不是关于排序结果,而是关于基于FooBarType类别的分组,并按顺序显示它们。
喜欢:
[COLLECTION]
第一类名称:[列出该类别]
第二类名称:[列出该类别]
视图现在显示集合,前面有类别名称:
{% for db in edit_form.foobar %}
<li>[Category: {{ db.foobar.vars.data.name }}]
{{ form_widget(db.value) }}</li>
{% endfor %}
我想按类别对此进行分组。所以它们按类别名称排序。
答案 0 :(得分: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
答案 1 :(得分: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所说,在您的实体中订购类别。