2016-05-13 61 views
0

这是一个很长一段时间我在找我的问题...... 解决方案当您在一个Sf2的选择多,它呈现这样自定义选项中进行选择数倍的Symfony2]

<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 ...

+2

你有没有尝试['expanded'(http://symfony.com/doc/current/reference/forms/types/entity。 html#expanded)选项? –

+0

好吧,现在我有我想要的,但我不能定制像我想要的选项。如果我想每行有一个选项...我应该怎么做? – Cyd

+0

这是您原始帖子的不同问题。你应该发布一个新问题(我认为比编辑这个更好,目标太不同了)。无论你决定,你应该把你的问题提交的HTML,因为它将有助于定义CSS规则。 –

回答

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