在Symfony2上创建一个多色选择框

时间:2012-12-06 16:28:28

标签: php css symfony drop-down-menu

我尝试创建以下字段:

<select name="test">
    <option value="1">a</option>
    <option value="2">b</option>
    <option value="3" style="font-weight: bold; color: red;">c *</option>
    <option value="4">d</option>
    <option value="5">e</option>
</select>

这会创建一个双色选择框:

enter image description here

但是在Symfony2中,我不知道如何将一个类应用于单个选项。

如果在我看来我做了:

{{
    form_widget(myForm.test, {
        'attr': {
            'class': 'red',
        }
    }) 
}}

或者,如果在我的表格中,我会这样做:

    $builder->add('test', 'choice', array(
            'required' => true,
            'choices' => array('a', 'b', 'c *', 'd', 'e'),
            'attr' => array('class' => 'red'),
    ));

该属性存储在<select>标记中,并应用于整个可选值。

修改

我使用jQuery解决了这个问题:

1)在我看来,我把:

{{
    form_widget(myForm.test, {
        'attr': {
            'class': 'starred-select',
        }
    }) 
}}

2)在我的javascripts中,我说:

    $('.starred-select option').each(function() {
        if ($(this).text().substr(-2) == ' *') {
            $(this).addClass('red');
        }
    });

当然,我的价值观无法由明星完成。

如何将类应用于Symfony2中的<option>标记?

1 个答案:

答案 0 :(得分:2)

您必须覆盖窗体小部件选择字段的呈现方式。

Form Theming允许您自定义表单的每个部分。甚至可以覆盖base form blocks

执行此操作的最佳方法是从form_div_layout.html.twig复制默认块  (在您的情况下,您要覆盖widget_choice_options块)

您还可以在应用的different levels自定义您的阻止。深入了解the documentation,其中包括完整解释的示例。