将css类添加到Symfony2表单本身

时间:2014-09-15 11:57:14

标签: symfony symfony-forms

首先是一些代码:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->addEventListener(
        FormEvents::POST_SET_DATA,
        function (FormEvent $event) {

            /** @var Company $company */
            $company = $event->getData();
            $form    = $event->getForm();

            $form->add(
                'paymentTerms',
                'integer',
                array(
                    'label'          => 'Payment Terms',
                    'label_attr'     => array(
                        'class' => 'col-sm-4 control-label'
                    ),
                    'attr'           => array(
                        'class' => 'form-control'
                    ),
                    'error_bubbling' => true
                )
            );
        }
    )->setAction('test action')->setAttributes(array('class' => 'form-horizontal'));
}

有人可以解释为什么我似乎无法在表单中添加css类吗?

在上面的示例中,->setAction('test action')完全正常,但->setAttributes(array('class' => 'form-horizontal'))对表单没有任何影响。

我也试过->setAttribute('class', 'form-horizontal')而没有运气。没有错误,就好像它被忽略了一样。为什么呢?

1 个答案:

答案 0 :(得分:1)

您可以像往常一样将attr定义添加到默认值中:

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        ...
        'attr'       => array(
            'class' => 'form-horizontal'
        ),
    ));
}

无论如何,最好将样式定义限制在您的视图中。您应该将class属性添加到表单中,如下所示(documentation):

{{ form_start(form, {'attr': {'class': 'form-horizontal' }}) }}