1

を使用してサイトをプログラミングしていますsymfony2

From Typenameのコレクションを含むフォームがありますOptionType。このようなもの:

$form = $this->createFormBuilder($defaultData)
    ->add('short_title', 'text')
    ->add('options', 'collection', array('type' => new OptionType(),'allow_add' => true, 'allow_delete' => true, 'by_reference' => false))
    ...

OptionTypeOption定義により、クラスのオブジェクトにマッピングされます。

ここで、クラスOptionTypeのメンバーではないフィールドを追加する必要があります。Optionこの状況では、次の行をbuildForm関数の関数に追加しましたOptionType:

$builder->add('optionImage', 'file', array('property_path' => false));

うまくいきましたが、問題は、この新しいフィールドのデータにどのようにアクセスできるかです。

この余分なフィールドがフォームに直接追加された場合、答えは次のとおりです。

$form->get('optionImage')->getData();

しかし、ここには a のコレクションがありFrom Type、このコードは機能しません。

答えの 1 つは、「(クラスなしでフォームを使用して) にマップOptionTypeしないOptionで、送信されたデータの配列を取得し、これらのデータを自分で処理する」です。しかし、何らかの理由で、このソリューションを使用したくありません。

4

1 に答える 1

0

これを試して:

$form['options'][0]['optionImage']->getData();

ここで、0はコレクションでオフセットされます

于 2012-07-09T13:03:31.810 に答える