Symfony 2 - 如何编辑单选按钮组

Ger*_*rdo 3 radio-button symfony twig

嗨,我是Symfony的新手,我有以下问题:

我正在实现一个速率表单,所以我添加了一个单选按钮组,因此选择1到5之间的值.想法是显示五个星而不是经典的单选按钮,所以我需要为每个输入字段添加一个类.

问题是symfony将类添加到空洞无线电组而不是每个输入.

我搜索了一个解决方案,我找到的最接近的提示是:

{% block choice_widget_expanded %}
{% spaceless %}
    <div {{ block('widget_container_attributes') }}>
        {% for child in form %}
            {{ form_widget(child, {'attr': {'class': 'rating-input'}}) }}
        {% endfor %}
    </div>
{% endspaceless %}
{% endblock choice_widget_expanded %}
Run Code Online (Sandbox Code Playgroud)

上面的代码还将无线电组包装在具有"rating-input"类的div上.

这是控制器中的测试表单代码:

$form->createFormBuilder()
     ->add('rate', 'choice', array(1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5), 'expanded' => true, 'multiple' => false))
     ->add('save', 'submit')
     ->getForm();
Run Code Online (Sandbox Code Playgroud)

这是我得到的html的示例图像: 在此输入图像描述 任何想法我怎么能实现我想要的?提前致谢.

Ger*_*rdo 6

好的,这就是我的所作所为.我使用表单主题来覆盖每个输入的显示方式.要做到这一点,你必须添加一个"form_theme form self"标签,并覆盖要在其中呈现表单的树枝中的choice_widget块.

{% extends ::base.html.twig %}

{% form_theme form _self %}

{% block choice_widget_expanded %}
    <div {{ block('widget_container_attributes') }}>
        {% for child in form %}
            {{ form_widget(child, {'attr': 'star'}) }}
            {{ form_label(child) }}
        {% endfor %}
    </div>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

无论如何,谢谢你的答案.