在Symfony2.4表单上设置类(或任何属性)

时间:2014-05-18 19:53:35

标签: php forms symfony

我正在试图弄清楚如何在通过FormBuilder创建的Symfony2表单上设置类(或任何属性)。我知道您可以通过表单本身的模板来完成此操作,但我仍然想知道如何通过控制器中的$this->createFormBuilder()来完成。

我的代码如下。我已经尝试了setAttribute()方法,正如您在我的代码中看到的那样,但它没有任何效果。我最初认为当我覆盖默认的twig form_div_layout.html.twig文件时,我搞砸了,但事实并非如此。

private function createResolvedForm($id) {
    return $this->createFormBuilder()
                ->setAction($this->generateUrl('system_announcement_resolve', array('id' => $id)))
                ->setMethod('PUT')
                ->setAttribute('class', 'resolved-form exempt-from-default-ajax')
                ->add('submit', 'submit', array(
                    'label' => 'Mark As Resolved',
                    'attr' => array(
                        'class' => 'btn btn-success btn-xs',
                        'data-toggle' => 'tooltip',
                        'data-placement' => 'top',
                        'title' => 'Resolve Issue #' . $id,
                    )
                ))
                ->getForm();
}

要清楚,我没有在我传递的提交按钮上设置类的问题,而是实际的表单本身。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

createFormBuilder方法有两个输入参数

public FormBuilder createFormBuilder(mixed $data = null, array $options = array())

因此,在您的示例中,您可以使用第二个参数在整个表单上设置类

private function createResolvedForm($id) {
return $this->createFormBuilder(null, array('attr' => array('class' => 'resolved-form exempt-from-default-ajax')))
            ->setAction($this->generateUrl('system_announcement_resolve', array('id' => $id)))
            ->setMethod('PUT')
            ->setAttribute('class', 'resolved-form exempt-from-default-ajax')
            ->add('submit', 'submit', array(
                'label' => 'Mark As Resolved',
                'attr' => array(
                    'class' => 'btn btn-success btn-xs',
                    'data-toggle' => 'tooltip',
                    'data-placement' => 'top',
                    'title' => 'Resolve Issue #' . $id,
                )
            ))
            ->getForm();
}