Symfony2 twig form_widget自定义html

时间:2014-02-07 11:06:31

标签: html css symfony twig

如何自定义以下代码?我该怎么用来自数据库的复选框。

这是我的表格

$builder->add('entityname', 'entity', array(
             'class'    => 'MyBundle:applicant',
             'label'    => 'label',
             'property' => 'name',
             'expanded' => true,
             'required' => false,
             'multiple' => true,
             'attr' => array('class' => 'css-checkbox')

这是我的Twig布局

<div>
        <div>
            {% for entity in form %}
                {{ form_widget(entityname) }}
            {% endfor %}
        </div>
</div>

这就是我在HTML中看到的内容:

<div id="name" class="css-checkbox">
<input type="checkbox" id="name_1" name="name[entityname][]" value="1" />
<label for="name_1">AD DNS</label>
<input type="checkbox" id="name_2" name="name[entityname][]" value="2" />
<label for="name_2">Print</label>
<input type="checkbox" id="name_3" name="name[entityname][]" value="3" />
<label for="name_3">Citrix</label>
<div>

我想要的是:

 <div id="name" class="css-checkbox">
<div>
        <input type="checkbox" id="name_1" name="name[entityname][]" value="1" />
    </div> 
    <div>
        <label for="name_1">AD DNS</label>
    </div> 
    <div>
       <input type="checkbox" id="name_2" name="name[entityname][]" value="2" />
    </div> 
    <div>
       <label for="name_2">Print</label>
    </div> 
 <div>
       <input type="checkbox" id="name_3" name="name[entityname][]" value="3" />
    </div> 
    <div>
       <label for="name_3">Citrix</label>
    </div>  
  <div>

如何使用Twig处理此问题?

2 个答案:

答案 0 :(得分:1)

您有两个选项来覆盖表单呈现: 1.覆盖模板中的小部件 2.扩展symfony .twig文件的表单元素定义

更多detilas请看这里:http://symfony.com/doc/current/cookbook/form/form_customization.html

答案 1 :(得分:0)

您可以将其添加到您的树枝模板中:

{% form_theme form _self %}

{% block checkbox_widget %}
{% spaceless %}
<div>
    <input type="checkbox" {{ block('widget_attributes') }}{% if value is defined %} value="{{ value }}"{% endif %}{% if checked %} checked="checked"{% endif %} />
</div>
<div>
<label  for="{{ id }}">{{ label|trans }}</label>
</div>

{% endspaceless %}
{% endblock checkbox_widget %}