gpt4 book ai didi

forms - Symfony2 - 将 CSS 类添加到扩展的选择字段(单选)

转载 作者:行者123 更新时间:2023-12-02 03:45:44 24 4
gpt4 key购买 nike

我需要能够将 CSS 类添加到我选择字段的每个单选按钮。不幸的是,Symfony2 在 div 中填充了扩展选项,它会在 CSS 类中传递所有内容,而不是按钮本身。

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

<div <?php echo $view['form']->block($form, 'widget_container_attributes') ?>>
<?php foreach ($form as $child): ?>
<?php echo $view['form']->widget($child) ?>
<?php echo $view['form']->label($child) ?>
<?php endforeach ?>
</div>

这是我的无 div 版本(在 Twig 中):

{% block choice_widget_expanded %}
{% for child in form %}
{{ form_widget(child) }}
{{ form_label(child) }}
{% endfor %}
{% endblock %}

这样,我怎样才能将 CSS 类传递给实际的小部件?我像这样传递它:

{% form_widget(form.blah, { 'attr' : { 'class': 'css-class' } }) %}

在我看来,但我不确定如何在我的小部件主题中获取它。

我不能为此使用单选按钮,所以告诉我切换到选择或复选框不是一个选项。如果可以的话,我真的真的不想将 radio 硬编码到我的表单 View 中。


编辑:我试过:

{% block choice_widget_expanded %}
{% for child in form %}
<input type="radio" value="{{ child.vars.value }}" {{ block('widget_attributes') }} />
{% endfor %}
{% endblock %}

但它仍然在源代码中呈现包含 div,并将我的 CSS 类传递给该 div 而不是 radio 输入。我知道主题是“有效的”,因为我在摆弄过程中抛出了一些异常。


编辑 2:根据以下建议,我创建了自己的 radio_widget 主题:

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

但是,不幸的是,它没有使用我在上面添加的类生成 radio 。我不确定我是否需要做一些继承工作。

最佳答案

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

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

  2. 谈到表单主题,如果您想覆盖单选选项,您应该覆盖 block radio_widget(您可以在 form_div_layout.html.twig 中找到原始的)

  3. 当然不要忘记告诉您模板要使用表单主题:

    {% form_theme form _self %}

关于forms - Symfony2 - 将 CSS 类添加到扩展的选择字段(单选),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17283278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com