Как установить имя формы без класса? - PullRequest
18 голосов
/ 17 октября 2011

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

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 ]

43 голосов
/ 13 ноября 2012

Я хотел бы привести немного больше точности.По крайней мере, для самой последней версии Symfony (2.1) правильный синтаксис (задокументированный в 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();
14 голосов
/ 20 октября 2011

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

$this->get('form.factory')->createNamedBuilder('form', 'form_name', $defaultData)
    ->add('name', 'text')
    ->add('email', 'email')
    ->getForm();
3 голосов
/ 11 июля 2016

Если вы используете 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();
3 голосов
/ 17 октября 2011

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

$data = $form->getData();
1 голос
/ 10 января 2014

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...