を使用してサイトをプログラミングしています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で、送信されたデータの配列を取得し、これらのデータを自分で処理する」です。しかし、何らかの理由で、このソリューションを使用したくありません。