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

Symfony 2-如何编辑单选按钮组,symfony,radio-button,twig,Symfony,Radio Button,Twig,嗨,我是Symfony的新手,我有以下问题: 我正在实现一个费率表,所以我添加了一个单选按钮组,以便选择1到5之间的值。 这个想法是展示五星,而不是经典的单选按钮,所以我需要添加一个类 每个输入字段 问题是symfony将类添加到hole radio组,而不是每个输入 我搜索了一个解决方案,找到的最接近的提示是: {% block choice_widget_expanded %} {% spaceless %} <div {{ block('widget_container_at

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

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

问题是symfony将类添加到hole radio组,而不是每个输入

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

{% 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 %}
下面是我得到的html的示例图像: 有什么想法可以让我实现我想要的吗?
提前谢谢

有几种可能的解决方案:

jQuery 看这个。将鼠标指针移到星星上,然后单击最后一颗星星

这些想法是:

  • 添加5个包含每个星星的元素
  • 为每个
  • 当光标悬停在
    上时,将前面的
    全部涂成金色
  • 单击星号时,获取
    的值并更改
  • 离开框时,显示与
    值相同的星星数(如果不显示,您可以单击第三颗星,悬停5颗星,离开框,
    的值(3)将与显示的星星数(5)不同)
  • 您可以隐藏
    元素。事实上,更改输入类型(收音机、选择、数字字段等)应该不是问题

    编辑:

    旧的解决方案: 设置每个值的样式 为什么要在收音机中添加一些课程

    您可以使用CSS向
    添加一些样式,例如:

    label[for=tag\u rate\u 0]{
    颜色:绿色;
    }
    标签[for=标签\费率\ 1]{
    颜色:红色;
    }
    标签[for=标签费率2]{
    颜色:蓝色;
    }
    标签[for=标签费率3]{
    颜色:橙色;
    }
    标签[for=标签费率4]{
    颜色:紫色;
    }
    
    请参见上的示例<代码>标签[for=tag\u rate\u 0]对应于
    1
    分数,这是由于Symfony2计数字段的方式造成的

    展示明星 您还可以通过修改表单来显示1到5颗星:

    ->添加('rate','choice',数组(
    “选项”=>数组(
    1 => '*',
    2 => '**',
    3 => '***',
    4 => '****',
    5 => '*****'
    ),
    “扩展”=>true,
    “多个”=>false
    ))
    
    它将显示分数的
    *
    ****
    。请参见上的示例

    jQuery用户界面 按钮小部件可用于。请参见。

    好的,下面是我所做的。 我使用表单主题化来覆盖每个输入的显示方式。 要做到这一点,您必须添加一个“form\u theme form self”标记,并覆盖要呈现表单的细枝中的choice\u小部件块

    {% 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 %}
    
    {%extends::base.html.twig%}
    {%form\u主题form\u self%}
    {%block choice_widget_expanded%}
    {表格%中的子项为%1}
    {{form_小部件(子,{'attr':'star'}}}}
    {{form_label(child)}
    {%endfor%}
    {%endblock%}
    

    无论如何,感谢您的回答。

    比简单地通过单个单选按钮进行循环更容易:

    {% for radioRate in form.rate %}
        {{ form_widget(radioRate, {'attr': 'star'}) }}
    {% endfor %}
    

    谢谢你的回答,但也许我解释得不对。我想要的是将单选按钮显示为星形,而不是标签。正如你在回答中所解释的,在标签上显示星星是很容易的。我的问题是symfony将我用于显示星星的类设置为一组收音机,而不是每个收音机。谢谢请提供所需内容的图像。是否在网站上使用jQuery?你可以用它来添加任何你想要的类。谢谢你的回答,它可以满足我的需要,但是有没有办法用单选按钮来代替选择标签呢?我必须遵守设计师的设计规范,它们必须是收音机。很抱歉给您带来不便。
    {% for radioRate in form.rate %}
        {{ form_widget(radioRate, {'attr': 'star'}) }}
    {% endfor %}