我需要使用Tag创建一个select。
这是我填写选择
的代码 ->add('city', 'entity', array(
'empty_value' => 'Choisissez une option',
'class' => 'FrontBundle:City',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('c')
->orderBy('c.city', 'ASC');
},
))
这是我在html.twig中的代码
<div class="form-group">
{{ form_label(form.city, 'Ville') }}
<div class="col-sm-8">
{{ form_widget(form.city) }}
</div>
</div>
以下是我想得到的结果:
<select>
<optgroup label="Région 1">
<option value="ville 1">Ville 1</option>
<option value="ville 2">Ville 2</option>
</optgroup>
<optgroup label="Région 2">
<option value="ville 3">Ville 3</option>
<option value="ville 4">Ville 4</option>
</optgroup>
</select>
有什么想法吗?谢谢。
答案 0 :(得分:0)
正如gp_sflover所述in comments,您可以使用entity
字段类型的group_by
option:
这是用于组织的属性路径(例如
author.name
) 组中可用的选择。它仅在呈现为选择时有效 标记并通过在选项周围添加optgroup
元素来实现。选择 不呈现此属性路径的值的呈现方式 直接在select标签下,没有周围的optgroup。
因此,假设region
是city
的属性,您的代码应如下所示:
->add('city', 'entity', array(
'empty_value' => 'Choisissez une option',
'class' => 'FrontBundle:City',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('c')
->orderBy('c.city', 'ASC');
},
'group_by' => 'region',
))