在Symfony表单中编辑复选框列表的视图

时间:2017-01-26 12:48:46

标签: html css forms symfony twig

我有一个带有实体字段的表单,您可以在其中选择多个省份。我希望将它显示为一个列表,一个在另一个下面,但这就是它现在的样子:

enter image description here

我希望它看起来像这样:

enter image description here

我可以编辑它吗?

formType代码:

$builder->add('provinces', EntityType::class, array(
    'label' => 'Provincias donde actuo',
    'required' => true,
    'class' => 'CASEventBundle:Province',
    'choice_label' => 'name',
    'required' => false,
    'multiple' => true,
    'expanded' => true
));

树枝模板:

{{ form_label(form.provinces) }}
    <br>
    <input type="checkbox" class="selectAllCheckboxes">Seleccionar todos<br>
    {{ form_errors(form.provinces) }}
    {{ form_widget(form.provinces) }}
    <br><br>

编辑:以下是生成的HTML代码:

<div id="cas_group_profile_provinces" class="claseprov">
            <input type="checkbox" id="cas_group_profile_provinces_1" name="cas_group_profile[provinces][]" value="1">
            <label for="cas_group_profile_provinces_1">Álava</label>
            <input type="checkbox" id="cas_group_profile_provinces_2" name="cas_group_profile[provinces][]" value="2">
            <label for="cas_group_profile_provinces_2">Albacete</label>
            <input type="checkbox" id="cas_group_profile_provinces_3" name="cas_group_profile[provinces][]" value="3">
            <label for="cas_group_profile_provinces_3">Alicante</label>
            <input type="checkbox" id="cas_group_profile_provinces_4" name="cas_group_profile[provinces][]" value="4">
            <label for="cas_group_profile_provinces_4">Almería</label>
        ...
</div>

2 个答案:

答案 0 :(得分:1)

我自己找到了一个解决方案

{{ form_label(form.provinces) }}
    <br>
    <input type="checkbox" class="selectAllCheckboxes">Seleccionar todos<br>
    <div id="provs" st>
    {% for field in form.provinces %}
       <div class="provsli" style="display: inline-block; width: 180px;">
         {{ form_widget(field) }}
         {{ form_label(field) }}
       </div>
    {% endfor %}
    </div>

即便如此,多亏了所有答案:)

答案 1 :(得分:0)

查看您的示例,您想要生成的html基本上是:

<label>
    <input type="checkbox"> Label Name
</label>

这样你可以浮动标签,让它们充​​当文本和复选框的小容器,或者使用flexbox并拥有更多控制权。

&#13;
&#13;
*{ box-sizing: border-box; }

div {
  display: flex;
  flex-wrap: wrap;
}

label {
  flex: 1 0 25%;
  white-space: nowrap;
  padding: 5px;
}

input {
  display: inline;
  margin: 0 10px 0 0;
}
&#13;
<div id="cas_group_profile_provinces" class="claseprov">
  
  <label for="cas_group_profile_provinces_1"><input type="checkbox" id="cas_group_profile_provinces_1" name="cas_group_profile[provinces][]" value="1">Álava</label>
  
  <label for="cas_group_profile_provinces_2"><input type="checkbox" id="cas_group_profile_provinces_2" name="cas_group_profile[provinces][]" value="2">Albacete</label>
  
  <label for="cas_group_profile_provinces_3"><input type="checkbox" id="cas_group_profile_provinces_3" name="cas_group_profile[provinces][]" value="3">Alicante</label>
  
  <label for="cas_group_profile_provinces_4"><input type="checkbox" id="cas_group_profile_provinces_4" name="cas_group_profile[provinces][]" value="4">Almería</label>
  
  <label for="cas_group_profile_provinces_1"><input type="checkbox" id="cas_group_profile_provinces_1" name="cas_group_profile[provinces][]" value="1">Med length</label>
  
  <label for="cas_group_profile_provinces_2"><input type="checkbox" id="cas_group_profile_provinces_2" name="cas_group_profile[provinces][]" value="2">Short</label>
  
  <label for="cas_group_profile_provinces_3"><input type="checkbox" id="cas_group_profile_provinces_3" name="cas_group_profile[provinces][]" value="3">Something long</label>
  
  <label for="cas_group_profile_provinces_4"><input type="checkbox" id="cas_group_profile_provinces_4" name="cas_group_profile[provinces][]" value="4">Almería</label>
  
  <label for="cas_group_profile_provinces_1"><input type="checkbox" id="cas_group_profile_provinces_1" name="cas_group_profile[provinces][]" value="1">Álava</label>
  
  <label for="cas_group_profile_provinces_2"><input type="checkbox" id="cas_group_profile_provinces_2" name="cas_group_profile[provinces][]" value="2">Albacete</label>
  
  <label for="cas_group_profile_provinces_3"><input type="checkbox" id="cas_group_profile_provinces_3" name="cas_group_profile[provinces][]" value="3">Short</label>
  
  <label for="cas_group_profile_provinces_4"><input type="checkbox" id="cas_group_profile_provinces_4" name="cas_group_profile[provinces][]" value="4">Something long</label>
</div>
&#13;
&#13;
&#13;