Symfony2 表单:更改表单标签中的默认前缀

4
我正在渲染一个表单,每个小部件都有一个ID,例如:form_username、form_password等,每个相应的标签都有一个for字段,如for="form_username"。
我能否自定义这个ID和For属性对吗?因为我在同一页上呈现了2个表单,它们的字段名称冲突了...
编辑:以下是我希望自定义表单名称的示例代码。
$form = $this->createFormBuilder($user, array('validation_groups' => array('registration')))
             ->add('username', 'text')
             ->add('email', 'email')
             ->add('password', 'repeated', array('type' => 'password'))
             ->getform();

你是在使用表单类还是控制器中的FormBuilder? - Problematic
1个回答

7
您在控制器创建表单时需要为每个表单提供不同的名称:
```html

您在控制器创建表单时需要为每个表单提供不同的名称:

```
$builder1 = $this->get('form.factory')->createNamedBuilder(new FooFormType(), 'foo1');
$builder2 = $this->get('form.factory')->createNamedBuilder(new FooFormType(), 'foo2');

很抱歉,我之前没有完全说明问题...我正在使用FormBuilder,所以我认为这个解决方案不会起作用。 - kumarharsh
他的回答是正确的,$this->createFormBuilder()只是同一个服务调用的快捷方式。试一下就知道了。 - Inoryy
@kris:我在调用createFormBuilder()函数时,向其传递了额外的参数,但是出现了如下错误:Argument 2 passed to Symfony\Bundle\FrameworkBundle\Controller\Controller::createFormBuilder() must be an array, string given。 - kumarharsh
那不是正确的方法。你需要调用 $this->get('form.factory')->createNamedBuilder() - Kris Wallsmith
谢谢Kris。浏览 sf-2.0 的稀疏文档真是让人头疼,但最终我从源代码中找到了正确的用法。我本来在想是否可以使用 createFormBuilder(),但它没有参数来接受自定义表单名称。 - kumarharsh

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