如何使用Symfony的bootstrap主题显示我的复选框选项?

时间:2015-09-25 06:40:27

标签: symfony checkbox twitter-bootstrap-3

我有一个带有两个复选框的小表单和一个我想使用Bootstrap显示的提交按钮。我的每个复选框都有14个选项,标签很短。 我的表格:

$builder
    ->add('banks', 'entity', array(
                'class'         => 'AppBundle:Bank',
                'property'      => 'name',
                'multiple'      => true,
                'expanded'      => true,
                'required'      => false,
                'label'         => 'Banques',
          ))
    ->add('companies', 'entity', array(
                'class'         => 'AppBundle:Company',
                'property'      => 'name',
                'multiple'      => true,
                'expanded'      => true,
                'required'      => false,
                'label'         => 'Sociétés',
          ))
    ->add('search','submit', array('label'         => 'Filtrer'))
    ;

我的观点:

{% form_theme form 'bootstrap_3_layout.html.twig' %}
{{ form_start(form) }}

{{ form_row(form.banks) }}
<button type="button" class="btn btn-primary" id="check_banks">Cocher toutes les banques</button>
{{ form_row(form.companies) }}
<button type="button" class="btn btn-primary" id="check_companies">Cocher toutes les sociétés</button>
{{ form_end(form) }}

我应该尝试查找引导程序表单主题文件并对其进行编辑,还是有更直接的解决方案?

2 个答案:

答案 0 :(得分:1)

将此代码添加到字段

的选项就足够了
   'label_attr' => array(
       'class' => 'checkbox-inline'
   )

表示复选框

   'label_attr' => array(
       'class' => 'radio-inline'
   )

收音机。结果是:

example_of_usage

答案 1 :(得分:0)

检查 bootstrap_3_layout.html.twig 的版本。旧版本有问题,必须按以下方式更改:

{% block checkbox_widget -%} {# INLINE FIXED !!!!!!!!!!!!!!!!!!!! #}
    {% set parent_label_class = parent_label_class|default(label_attr.class|default('')) -%}
    {% if 'checkbox-inline' in parent_label_class %}
        {{- form_label(form, null, { widget: parent() }) -}}
    {% else -%}
        <div class="checkbox">
            {{- form_label(form, null, { widget: parent() }) -}}
        </div>
    {%- endif %}
{%- endblock checkbox_widget %}

{% block radio_widget -%} {# INLINE FIXED !!!!!!!!!!!!!!!!!!!! #}
    {% set parent_label_class = parent_label_class|default(label_attr.class|default('')) -%}
    {% if 'radio-inline' in parent_label_class %}
        {{- form_label(form, null, { widget: parent() }) -}}
    {% else -%}
        <div class="radio">
            {{- form_label(form, null, { widget: parent() }) -}}
        </div>
    {%- endif %}
{%- endblock radio_widget %}

然后在您的表单中,只需添加

->add('fruits',          ChoiceType::class, array(
                                    'required' => true,
                                    'choices'  => $this->getFruits(),
                                    'multiple' => true,
                                    'expanded' => true,
                                    'label' => "Fruits ",
                                    'label_attr' => array('class' => 'checkbox-inline')
                                    ))