自定义表单中的选项选择多个[Symfony2]

时间:2016-05-13 10:06:12

标签: forms symfony select twig

我需要很长时间才能找到解决问题的方法...... 当您在Sf2中选择多个时,它会像这样呈现

<select multiple="multiple">            
    <option value="1" selected="selected">something</option>
    <option value="3" selected="selected">something else</option>
</select>

我想在每个选项之前找到要添加复选框的内容。 像这样,用户必须单击复选框才能选中它。

这是我的表单构建器中的代码:

->add('projNats', EntityType::class, array(
          'class' => 'ITBundle:Nature',
          'label' => 'nature',
          'choice_label' => 'lib',
          'multiple' => true, 
          'required' => false))

理想情况下,我想要这样的东西,但它不起作用......

{% for nat in form.projNats %}
  <input type="checkbox"> {{ form_widget(nat) }}
{% endfor %}

我尝试自定义选项小部件,但我没有设法做到这一点。

{% block choice_widget_expanded %}
{% spaceless %}
    <div {{ block('widget_container_attributes') }}>
    {% for child in form %}
        <input type="checkbox"> {{ form_widget(child) }}
    {% endfor %}
    </div>
{% endspaceless %}
{% endblock choice_widget_expanded %}

使用symfony可能太难或根本不可能,我应该使用一些javascript ...

1 个答案:

答案 0 :(得分:0)

您必须启用expanded option才能显示复选框:

  

<强>扩展

     

输入:boolean默认值:false

     

如果设置为true,将呈现单选按钮或复选框   (取决于多重值)。如果为false,则选择元素   呈现。

所以你应该使用这样的东西:

->add('projNats', EntityType::class, array(
      'class' => 'ITBundle:Nature',
      'label' => 'nature',
      'choice_label' => 'lib',
      'multiple' => true,
      'expanded' => true,
      'required' => false))