Ответ 1
Есть ли причина, по которой вы не просто:
$data = $form->getData();
Здесь написано, как установить имя формы с классом:
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');
Есть ли причина, по которой вы не просто:
$data = $form->getData();
Я хотел бы привести еще некоторую точность. По крайней мере, для последней версии 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();
Для этой цели нет сочетания клавиш. Вместо этого вы должны получить доступ к методу createNamedBuilder
в форме factory:
$this->get('form.factory')->createNamedBuilder('form', 'form_name', $defaultData)
->add('name', 'text')
->add('email', 'email')
->getForm();
В версии 2.4.1 Symfony решение:
$form = $this->createFormBuilder ( NULL, array ( 'attr' => array ( 'name' => 'myFormName', 'id' => 'myFormId' ) ) )
->add (..
Вы также можете установить другие атрибуты формы, но я не пробовал. Замените NULL вашими данными, если хотите.
Если вы используете Symfony 3.1, типы полей изменились, чтобы использовать их явный класс (FormType
, TextType
и EmailType
), а позиция параметра для значения атрибута формы name
переключаемых мест с параметром FormType
в функции createNamedBuilder
.
$this->get('form.factory')
->createNamedBuilder('form_name', FormType::class, $defaultData)
->add('name', TextType::class)
->add('email', EmailType::class)
->getForm();