Php 在Symfony2上创建多色选择框

Php 在Symfony2上创建多色选择框,php,css,symfony,drop-down-menu,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</op

我尝试创建以下字段:

<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>
或者如果在我的表格中,我:

    $builder->add('test', 'choice', array(
            'required' => true,
            'choices' => array('a', 'b', 'c *', 'd', 'e'),
            'attr' => array('class' => 'red'),
    ));
该属性存储在
标记中,并应用于整个可选值

编辑 我使用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中的
标记?

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

允许您自定义表单的每个部分。甚至可以被覆盖

执行此操作的最佳方法是从复制默认块 (在您的情况下,您必须覆盖
widget\u choice\u options
块)


您还可以在应用程序的末尾自定义块。更深入地看一看,它包含了详细解释的示例。

请注意,并非所有渲染引擎都支持选项元素的样式。Webkit看起来不太好,但是有点嗯,怎么说呢,仅仅向
添加属性是一项很难的工作……没那么难,文档中包含了许多用例和示例。您只需覆盖一个部分(取决于您的需要)。继承还可以帮助您保持代码的清晰和简单。
    $('.starred-select option').each(function() {
        if ($(this).text().substr(-2) == ' *') {
            $(this).addClass('red');
        }
    });