Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Forms Symfony2-将CSS类添加到扩展的选项字段(收音机)_Forms_Symfony - Fatal编程技术网

Forms Symfony2-将CSS类添加到扩展的选项字段(收音机)

Forms Symfony2-将CSS类添加到扩展的选项字段(收音机),forms,symfony,Forms,Symfony,我需要能够添加一个CSS类到我选择字段的每个单选按钮。不幸的是,Symfony2在一个div中填充了扩展的选项,它在CSS类中获得了任何传递,而不是按钮本身 以下是默认的小部件主题(在PHP中): 这样,我如何将CSS类传递给实际的小部件?我是这样传递的: {% form_widget(form.blah, { 'attr' : { 'class': 'css-class' } }) %} 在我看来,但我不确定如何在我的小部件主题中抓住它 我不能使用单选按钮,所以告诉我切换到选择或复选框不是一

我需要能够添加一个CSS类到我选择字段的每个单选按钮。不幸的是,Symfony2在一个div中填充了扩展的选项,它在CSS类中获得了任何传递,而不是按钮本身

以下是默认的小部件主题(在PHP中):

这样,我如何将CSS类传递给实际的小部件?我是这样传递的:

{% form_widget(form.blah, { 'attr' : { 'class': 'css-class' } }) %}
在我看来,但我不确定如何在我的小部件主题中抓住它

我不能使用单选按钮,所以告诉我切换到选择或复选框不是一个选项。如果可以的话,我真的,真的不想把收音机硬编码到我的表单视图中


编辑:我试过:

{% block choice_widget_expanded %}
    {% for child in form %}
        <input type="radio" value="{{ child.vars.value }}" {{ block('widget_attributes') }} />
    {% endfor %}
{% endblock %}
{%block choice\u widget\u expanded%}
{表格%中的子项为%1}
{%endfor%}
{%endblock%}
但是它仍然在源代码中呈现一个包含的div,并将我的CSS类传递给该div,而不是无线电输入。我知道这个主题是“有效的”,因为我在摆弄小提琴时抛出了一些异常


编辑2:根据以下建议,我创建了自己的radio_小部件主题:

{% block radio_widget %}
    <input type="radio" class="star {split:2}" {{ block('widget_attributes') }} value="{{ value }}" {% if checked == true %}checked="checked"{% endif %} />
{% endblock %}
{%block radio\u widget%}
{%endblock%}

但是,不幸的是,它不能用我上面添加的类生成收音机。我不确定是否需要做一些继承工作。

有趣的是,为什么您希望每个单选选项都有一个class属性。但是

  • 因为choice是单个字段(无论它有多少个选项),所以您只能将类添加到包装器div中。对于主题,你应该使用CSS

  • 说到表单主题,如果您想覆盖单选选项,您应该覆盖
    阻止单选小部件
    (您可以在form\u div\u layout.html.twig中找到原始的一个)

  • 当然,别忘了告诉模板使用表单主题:

    {% form_theme form _self %}
    

  • 是的,问题是每个单选按钮都应该是评级系统的一部分。评级系统使用jQuery动态地将普通按钮替换为星形按钮。但是,你关于覆盖
    radio_widget
    的想法很好,所以让我试试,这是谷歌为我找到的,我还没有尝试过,但这看起来很有希望,而且你不必对表单主题太乱:)不幸的是,它不允许半星。我很确定你可以在不影响表单主题的情况下构建它。例如,如果你想获得五星评级,并且能够以半星级进行评级,请创建10个选项,然后在查看该链接中的示例时使用:奇数和:偶数选择器设置收音机框。你能告诉我你最终是如何设置的吗/im面临相同的问题。你包括哪些脚本?因为当我在html表单中输入比率(class=“star”)时,它不会显示我的星星
    {% block radio_widget %}
        <input type="radio" class="star {split:2}" {{ block('widget_attributes') }} value="{{ value }}" {% if checked == true %}checked="checked"{% endif %} />
    {% endblock %}
    
    {% form_theme form _self %}