如何设置没有类的表单的名称?

zii*_*web 18 symfony

这里写了如何使用类设置表单的名称:

http://symfony.com/doc/2.0/book/forms.html#creating-form-classes

但是如何设置这个表单的名称?

$form = $this->createFormBuilder($defaultData)
    ->add('name', 'text')
    ->add('email', 'email')
    ->getForm();
Run Code Online (Sandbox Code Playgroud)

好吧,我试图以这种方式提交后获取帖子参数:

$postData = $request->request->get('form_name');
Run Code Online (Sandbox Code Playgroud)

小智 43

我想带来一些更精确的.至少,对于最新版本的Symfony(2.1),正确的symtax​​(在API上记录)是:

<?php

     public FormBuilderInterface createNamedBuilder(string $name, string|FormTypeInterface $type = 'form', mixed $data = null, array $options = array(), FormBuilderInterface $parent = null)
Run Code Online (Sandbox Code Playgroud)

这很重要,因为您仍然可以将选项传递给FormBuilder.有关更具体的示例:

<?php

 $form = $this->get('form.factory')->createNamedBuilder('user', 'form',  null, array(
    'constraints' => $collectionConstraint,
))
->add('name', 'text')
->add('email', 'email')
->getForm();
Run Code Online (Sandbox Code Playgroud)

  • 在`Symfony 3.1`中,如果你还想设置其他选项,解决方案是:`$ this-> get('form.factory') - > createNamedBuilder('yourFormName',FormType :: class,null,['option '=>' 值']` (6认同)

Ber*_*sek 14

没有用于此目的的快捷方法.相反,您必须访问createNamedBuilder表单工厂中的方法:

$this->get('form.factory')->createNamedBuilder('form', 'form_name', $defaultData)
    ->add('name', 'text')
    ->add('email', 'email')
    ->getForm();
Run Code Online (Sandbox Code Playgroud)

  • 刚才注意到在Symfony 2.3中,参数是相反的...所以它现在``(名称,类型,默认值,选项)`.. [参见文档](http://api.symfony.com/2.3/的Symfony /组件/表格/ FormFactory.html#method_createNamedBuilder) (6认同)

igo*_*orw 3

你有什么理由不这样做:

$data = $form->getData();
Run Code Online (Sandbox Code Playgroud)