在Symfony表单标签中添加自定义类

3
我正在构建一个Symfony 2.7表单,希望能够自定义标签。
目前,我可以使用Symfony文档中概述的表单构建器定义标签,但是我没有看到任何在不必在模板上进行操作的情况下自定义标签CSS的方法。
我知道我可以通过在form_label内部打印我的类,并将其与div一起使用来添加CSS类,但我更喜欢将其全部保留在表单构建器内部。
为了参考,我在下面添加了我的当前表单。
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('dob_day', 'choice', array(
            'required' => true,
            'choices' => $dobDays,
            'mapped' => false,
            'attr' => array(
                'label' => 'Day',
                'class' => 'form-control'
            )
        ))

        ->add('dob_month', 'choice', array(
            'required' => true,
            'choices' => $dobMonths,
            'mapped' => false,
            'attr' => array(
                'label' => 'Month',
                'class' => 'form-control'
            )
        ))

        ->add('dob_year', 'choice', array(
            'required' => true,
            'choices' => $dobYears,
            'mapped' => false,
            'attr' => array(
                'label' => 'Year',
                'class' => 'form-control'
            )
        ));
}
1个回答

3

如果你想在表单类型的HTML中添加一些CSS,请使用style属性。

->add('dob_year', 'choice', array(
    'required' => true,
    'choices' => $dobYears,
    'mapped' => false,
    'attr' => array(
        'label' => 'Year',
        'class' => 'form-control',
        'style' => 'max-width: 4rem;'. // Concat. the styles across lines for clarity.
            'border: solid 0.1rem teal;'
    )
));

话虽如此,

formType 内部可能是最后一个我会去寻找修改这些元素样式的位置,如果我是那个可怜的开发人员,当你离开时,我必须要维护这个表单。

虽然可以在这里添加内联 CSS,但不要超过几行。如果它增长到更多,请将某些外部 "main.css" 的类添加到您的主模板中(所有其他模板都从中继承),您将能够重用所做的样式。

最后一点思考

当您尝试使您的 formType 模块化时,这实际上非常有帮助,这就是为什么我想回答的原因 :) 然后我被一个关于“最佳实践”的口号所带动,这似乎表明这种技术没有其存在之处,但它确实有!


谢谢@rhono,我真的应该考虑到这个表单的可扩展性,不要在表单构建器中使用太多的样式 :) - user7191988

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接