Подтвердить что ты не робот

Как установить имя формы без класса?

Здесь написано, как установить имя формы с классом:

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');
4b9b3361

Ответ 1

Есть ли причина, по которой вы не просто:

$data = $form->getData();

Ответ 2

Я хотел бы привести еще некоторую точность. По крайней мере, для последней версии 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();

Ответ 3

Для этой цели нет сочетания клавиш. Вместо этого вы должны получить доступ к методу createNamedBuilder в форме factory:

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

Ответ 4

В версии 2.4.1 Symfony решение:

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

Вы также можете установить другие атрибуты формы, но я не пробовал. Замените NULL вашими данными, если хотите.

Ответ 5

Если вы используете 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();