我怎样才能CSS类添加到特定Symfony2的形式选择?(How can I add css cla

2019-09-17 13:43发布

我可以用javascript做到这一点,但我想知道如果我能一个CSS类添加到特定Symfony2的形式选择(不选择领域本身,而是个人的选择)。

例如,我想不同的CSS样式应用到个人“选项”标签中的“选择”。 我只能找到一个方法来添加一个类的标签。

提前致谢。

Answer 1:

您可以覆盖特定部件的布局在您的形式,这意味着你可以重写选择呈现方式,并把自定义代码来检查哪些选项的值是和输出自定义类存在。

您需要自定义布局应用到您的形式,像这样

{% form_theme form 'form_theme.html.twig' %}

然后,布局文件里面你需要重写该特定形式的特定领域(当然,除非你要直接编辑choice_widget在这种情况下使用选择的所有字段都将具备的功能)。

要做到这一点,你需要复制的部件,所以choice_widget,然后将其命名[_formName_fieldName_widget]

所以,如果你的表单名称是事件和您的字段名称是requireTickets,这将会是_events_requireTickets_widget



Answer 2:

我想你可以简单地做:

{{  form_widget(form.name, { 'attr' : { 'class' : 'myClass' } })  }}

...作为解释在这里 ,没有创建自己的表单样式。



Answer 3:

已经提供的答案都非常好,我觉得@ CriticalImpact的是最灵活的。 但我只是想提一提,如果你使用一个窗体类,你也可以到外地通过表单生成器定义本身添加额外的属性:

class SomeType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('someField', "text", array("attr" => array("class" => "someCssClass")))
            ->add("save", "submit");
    }
}

我已经找到了基本形式这是很有帮助的,因为它仍然可以让你做一个简单的{{ form(someForm) }}在枝杈文件调用。

(请注意,此解决方案仍然具有@CriticalImpact提到的缺点以上 )



Answer 4:

添加像CSS样式个人的选择属性如今可以与实现choice_attr ,如:

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)];
    },
));


文章来源: How can I add css classes to specific symfony2 form choices?