3

1 つのページに 2 つの異なるフォーム (ただし、同じエンティティを使用) が必要です。そうするために、私は使用しましたcreateNamedBuilder()

$cover = $this->get('form.factory')->createNamedBuilder('cover')
    ->add('file')
    ->getForm();

$data = $this->get('form.factory')->createNamedBuilder('data')
    ->add('name','text')
    ->getForm();

私の問題は、エンティティをそれにバインドするにはどうすればよいですか? 私が使用するcreateFormBuilder()と、次のようになります

$game = new Game;
$form = $this->createFormBuilder($game);

このように使用しようとするとcreateFormBuilder

    $cover = $this->createFormBuilder($game)
        ->add('file')
        ->getForm();

    $data = $this->createFormBuilder($game)
        ->add('name')
        ->getForm();

2 番目のフォームを使用すると、「このフォームには余分なフィールドを含めないでください」という結果になります。知らせ。

4

2 に答える 2

1

API docsによると、 の 3 番目のパラメーターをcreateNamedBuilder使用してエンティティを渡すことができます。

コードは次のようになります。

$game = new Game;

$cover = $this->get('form.factory')->createNamedBuilder('cover', 'form', $game)
    ->add('file')
    ->getForm();

$data = $this->get('form.factory')->createNamedBuilder('data', 'form', $game)
    ->add('name','text')
    ->getForm();

(まだ Symfony 2.0 を使用している場合は、最初と 2 番目のパラメーターの位置が入れ替わっていることに注意してください。)

于 2014-10-09T07:13:49.120 に答える