为选项列表中的每个项添加一个类

时间:2014-06-30 20:54:44

标签: jquery css symfony

我在Symfony2中使用FormBuilder,并且有一个实体字段,我使用选项列表显示。它看起来很好,但是长边,我想根据它们的分组添加css来缩进项目,这样用户就可以更容易地看到组的变化。

我可以使用jQuery根据选项的值添加一个类,但是如果我直接在表单的类中设置css类,我觉得它会更干净。有谁知道如何为每个选项设置一个类,而不是所有选项?我可以在css类的实体中添加一个字段,这是我设置类的首选方法,我希望这可以在formbuilder中以某种方式添加为attr。

现在我生成的html看起来像这样:

<form name="filter" method="post" action=""><div id="filter">
    <label for="choices">Choices</label>
        <select id="choices" name="filter[choices][]" class="chosen-select" multiple="multiple">
            <option value="100">A</option>
            <option value="105">B</option>
            <option value="110">C</option>
            <option value="200">D</option>
            <option value="205">E</option>
            <option value="215">F</option>
            <option value="300">G</option>
            <option value="400">H</option>
            <option value="405">H</option>
            <option value="430">J</option>
            <option value="450">K</option>
            <option value="500">L</option>
            <option value="502">M</option>
            <option value="504">N</option>
        </select>
    </div>
    <div>
        <button type="submit" id="search" name="filter[search]">Filter</button>
    </div>
</form> 

我需要调整所有选项标记以包含一个类,但该类将更改并与该值相关。我想渲染一下:

<option value="100" class="100">A</option>
<option value="105" class="100">B</option>
<option value="110" class="100">C</option>
<option value="200" class="200">D</option>
<option value="504" class="500">N</option>

现在我正在思考它,也许最简单的方法是使用jQuery查找每个选项的值并根据每个值添加一个类attr,但是我的逻辑与我的视图混合在一起。如果可能的话,我想在formbuilder中添加类,但我需要根据选项的值更改类。我的css将缩进下拉菜单中的项目,以便在视觉上容易识别组。

1 个答案:

答案 0 :(得分:0)

您可以使用自定义表单主题执行此操作。例如,您可以定义自定义块form_my_widget并使用它来呈现您的选择列表。

有关自定义区块的更多信息 - http://symfony.com/doc/current/cookbook/form/form_customization.html

在自定义主题中,您可以将class属性应用于各个option代码。