【问题标题】:Symfony2 Forms : Changing the default prefix in Form LabelsSymfony2 Forms:更改表单标签中的默认前缀
【发布时间】:2012-01-04 21:49:50
【问题描述】:

我正在渲染一个表单,每个小部件都有一个 ID,例如:form_username、form_password 等 并且每个对应的标签都有一个 for 字段,如 for="form_username"

我可以自定义这个 ID 和 For 属性对吗?因为我在一个页面上呈现 2 个表单,并且它们的字段名称发生冲突...

edit :这是我要自定义表单名称的示例代码。

$form = $this->createFormBuilder($user, array('validation_groups' => array('registration')))
             ->add('username', 'text')
             ->add('email', 'email')
             ->add('password', 'repeated', array('type' => 'password'))
             ->getform();

【问题讨论】:

  • 您使用的是表单类,还是控制器中的 FormBuilder?

标签: forms symfony


【解决方案1】:

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

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

【讨论】:

  • 很抱歉,我没有完全指定问题...我正在使用 FormBuilder,所以我认为这个解决方案行不通。
  • 他的回答是正确的, $this->createFormBuilder() 只是同一服务调用的快捷方式。试试看吧。
  • @kris :我收到一个错误,如:Argument 2 传递给 Symfony\Bundle\FrameworkBundle\Controller\Controller::createFormBuilder() 必须是一个数组,当我提供一个额外的参数时给出的字符串到 createFormBuilder() 函数。
  • 这不是正确的方法。您需要致电$this->get('form.factory')->createNamedBuilder()
  • 谢谢克里斯。浏览 sf-2.0 上的稀疏文档很痛苦,但最后我可以从源代码中发现正确的用法。我在想是否可以使用 createFormBuilder(),但它没有接受自定义表单名称的参数。
猜你喜欢
  • 2018-08-21
  • 2017-01-01
  • 2021-09-24
  • 1970-01-01
  • 1970-01-01
  • 2011-12-01
  • 2015-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多