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

时间:2011-10-17 15:29:07

标签: symfony

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

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

但如何设置此表单的名称?

$form = $this->createFormBuilder($defaultData)
    ->add('name', 'text')
    ->add('email', 'email')
    ->getForm();

好吧,我试图以这样的方式提交帖子参数:

$postData = $request->request->get('form_name');

5 个答案:

答案 0 :(得分: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)

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

<?php

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

答案 1 :(得分:14)

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

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

答案 2 :(得分:3)

你有什么理由不做:

$data = $form->getData();

答案 3 :(得分:3)

如果您正在使用Symfony 3.1,则字段类型已更改为使用其显式类(FormTypeTextTypeEmailType)以及值的参数位置表单name已使用createNamedBuilder function中的FormType参数切换了地点。

$this->get('form.factory')
  ->createNamedBuilder('form_name', FormType::class, $defaultData)
  ->add('name', TextType::class)
  ->add('email', EmailType::class)
  ->getForm();

答案 4 :(得分:1)

在Symfony的2.4.1版中,解决方案是:

$form = $this->createFormBuilder ( NULL, array ( 'attr' => array ( 'name' => 'myFormName', 'id' => 'myFormId' ) ) )
            ->add (..

您也可以通过这种方式设置其他表单属性,但我没试过。如果需要,将NULL替换为您的数据。