自定义Symfony ChoiceList渲染选择的方式(以div为单位)

时间:2013-10-24 12:22:24

标签: symfony symfony-forms

我有一个choice表单字段,其中有很多选项需要以某种方式进行分组,以便将它们分组,可以放在不同的div中。

我目前正在尝试实现ChoiceListInterface来实现这一目标,但我不知道如何实现这些方法,因此我可以将选择按组分组,但文档并未说明如何操作该..

这些选择总是一起呈现。

1 个答案:

答案 0 :(得分:2)

你有这个数组

$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

所以有另一种方式,更可定制(可能更脏) 在FormType

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 %}