自定义Symfony ChoiceList呈现选项的方式(按div分组)

自定义Symfony ChoiceList呈现选项的方式(按div分组),symfony,symfony-forms,Symfony,Symfony Forms,我有一个choiceform字段,其中有许多选项,我需要以某种方式对它们进行分组,以便将它们分为多个组,可能放在不同的div中 我目前正在尝试实现ChoiceListInterface,以实现这一点,但我不知道如何实现这些方法,以便能够呈现按组划分的选项,但文档没有说明如何实现 选择总是一起呈现。您有这个数组 $grouped_choices = array( 'Swedish Cars' => array( 'volvo' => 'Volvo',

我有一个
choice
form字段,其中有许多选项,我需要以某种方式对它们进行分组,以便将它们分为多个组,可能放在不同的div中

我目前正在尝试实现
ChoiceListInterface
,以实现这一点,但我不知道如何实现这些方法,以便能够呈现按组划分的选项,但文档没有说明如何实现

选择总是一起呈现。

您有这个数组

$grouped_choices = array(
    'Swedish Cars' => array(
        'volvo' => 'Volvo',
        'saab' => 'Saab',
    ),
    'German Cars' => array(
        'mercedes' => 'Mercedes',
        'audi' => 'Audi'
    )
);
第一种方法:快速简单

$builder->add($name, 'choice', array(
            'choices'   => $grouped_choices),
)
但我认为它不适用于
'expanded'=>true

所以还有另一种方式,更可定制(可能更脏) 在您的
表单类型中

foreach($grouped_choices as $name => $choices) {
  $builder->add($name, 'choice', array(
    'choices'   => $choices),
    'expanded'  => true, //custom the widgets like you wants
);
}

让控制器将数组发送到视图,然后在视图中发送

{% for name, choices in grouped_choices %}
  <div class="whatever">
   {{ form_row(name) }}
  </div>
{% endfor %}
{%表示名称,分组_choices%中的选项}
{{form_row(name)}}
{%endfor%}

使用选项
'expanded'=>true
有关此选项,请参阅我的升级,以获得完全定制的无线电部门