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

标签 forms symfony

我需要能够将 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/

相关文章:

forms - 您如何单击 map 并填充表单中的纬度和经度字段?

jquery - 联系表单的 2 列布局的 CSS 问题

symfony - 在没有实际提交的情况下强制 Symfony 表单验证

mysql - 从表中获取列值作为 sql 查询结果中的键

css - 占位符文本不适合输入区域

php - 命中 'back' 时重置复选框值

javascript - 将登录表单表格对齐到屏幕的顶部中间

symfony - Internet Explorer 将 post 请求转换为 get 请求

symfony - 如何在 Symfony2 Twig 模板中获取配置参数

javascript - 一般与 backbone.js 或 javascript 共享 Symfony2 验证规则?