我正在试图弄清楚如何在通过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();
}
要清楚,我没有在我传递的提交按钮上设置类的问题,而是实际的表单本身。
感谢您的帮助!
答案 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();
}