我可以使用Javascript来实现这个功能,但我想知道是否可以为特定的Symfony2表单选项(而不是选择字段本身)添加CSS类。
例如,我想在“select”中的各个“option”标签上应用不同的CSS样式。我只能找到一种方法来将类添加到“option”标签中。
谢谢您的帮助。
例如,我想在“select”中的各个“option”标签上应用不同的CSS样式。我只能找到一种方法来将类添加到“option”标签中。
谢谢您的帮助。
我想你可以简单地这样做:
{{ form_widget(form.name, { 'attr' : { 'class' : 'myClass' } }) }}
按照这里所述的方法,无需创建自己的表单样式。
class SomeType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('someField', "text", array("attr" => array("class" => "someCssClass")))
->add("save", "submit");
}
}
我发现这对于基本表单很有帮助,因为它仍然允许您在Twig文件中进行简单的{{ form(someForm) }}
调用。
(请注意,此解决方案仍具有@CriticalImpact提到的上面的缺点)
{% form_theme form 'form_theme.html.twig' %}
然后,在布局文件中,您需要覆盖特定表单的特定字段(除非您要直接编辑choice_widget,在这种情况下,所有使用choice的字段都将具有该功能)。
为此,您必须复制小部件,即choice_widget,然后将其命名为[_formName_fieldName_widget]
因此,如果您的表单名称是events,字段名称是requireTickets,则为_events_requireTickets_widget
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
// ...
$builder->add('attending', ChoiceType::class, array(
'choices' => array(
'Yes' => true,
'No' => false,
'Maybe' => null,
),
'choice_attr' => function($val, $key, $index) {
// adds a class like attending_yes, attending_no, etc
return ['class' => 'attending_'.strtolower($key)];
},
));