Symfony2 - Twig:HTML <optgroup>标记</optgroup>

时间:2015-02-28 12:56:43

标签: php html symfony twig

我需要使用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>

有什么想法吗?谢谢。

1 个答案:

答案 0 :(得分:0)

正如gp_sflover所述in comments,您可以使用entity字段类型的group_by option

  

这是用于组织的属性路径(例如author.name)   组中可用的选择。它仅在呈现为选择时有效   标记并通过在选项周围添加optgroup元素来实现。选择   不呈现此属性路径的值的呈现方式   直接在select标签下,没有周围的optgroup。

因此,假设regioncity的属性,您的代码应如下所示:

    ->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',
    ))