を使用してサイトをプログラミングしていますsymfony2
。
From Type
nameのコレクションを含むフォームがあります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))
...
OptionType
Option
定義により、クラスのオブジェクトにマッピングされます。
ここで、クラスOptionType
のメンバーではないフィールドを追加する必要があります。Option
この状況では、次の行をbuildForm
関数の関数に追加しましたOptionType
:
$builder->add('optionImage', 'file', array('property_path' => false));
うまくいきましたが、問題は、この新しいフィールドのデータにどのようにアクセスできるかです。
この余分なフィールドがフォームに直接追加された場合、答えは次のとおりです。
$form->get('optionImage')->getData();
しかし、ここには a のコレクションがありFrom Type
、このコードは機能しません。
答えの 1 つは、「(クラスなしでフォームを使用して) にマップOptionType
しないOption
で、送信されたデータの配列を取得し、これらのデータを自分で処理する」です。しかし、何らかの理由で、このソリューションを使用したくありません。