首页 > 解决方案 > 如何在 Symfony 表单中设置下拉列表的子元素样式

问题描述

我正在尝试设置 symfony 表单的下拉选项(标签和复选框)的样式,但遇到了问题。我可以为渲染的复选框和标签组设置样式,但不能单独设置每个项目(配对标签+复选框)。

我尝试通过以下方式设置它们的样式:

{{ form_widget(form.qualifications, {'attr': {'class':'d-block'} }) }}

但正如文档中详述的那样,这仅将样式应用于父元素(要选择的渲染选项组),而不是每个单独的选项。

这是创建小部件的 symfony 表单构建器部分

->add('qualifications', EntityType::class, [
                'class' => Tag::class,
                'multiple' => true,
                'expanded' => true,
                'required' => false,
                'placeholder' => 'Select...',
                'choices' => $this->tagsService->getTagsQualificationLevels(),
                'attr' => [
                    'class' => 'form-control-ajax-submit-on-change w-20',
                ]
            ])

我希望能够将样式应用于选择数组,但我真的坚持如何做到这一点。

标签: phpcssformssymfonydrop-down-menu

解决方案


您可以使用 choice_attr 选项:

    ->add('qualifications', EntityType::class, [
                'class' => Tag::class,
                'multiple' => true,
                'expanded' => true,
                'required' => false,
                'placeholder' => 'Select...',
                'choices' => $this->tagsService->getTagsQualificationLevels(),
                'attr' => [
                    'class' => 'form-control-ajax-submit-on-change w-20',
                ],
                'choice_attr' => function($choiceValue, $key, $value) {
                    return ['class' => 'my_custom_choice_class'];
                },
            ])

推荐阅读