我尝试创建以下字段:
<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>
这会创建一个双色选择框:
但是在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>
标记?
答案 0 :(得分:2)
您必须覆盖窗体小部件选择字段的呈现方式。
Form Theming允许您自定义表单的每个部分。甚至可以覆盖base form blocks。
执行此操作的最佳方法是从form_div_layout.html.twig复制默认块
(在您的情况下,您要覆盖widget_choice_options
块)
您还可以在应用的different levels自定义您的阻止。深入了解the documentation,其中包括完整解释的示例。