ベースから継承するエンティティがいくつかありWidget
ます。
フォームにwidgets
は、コレクションであるフィールドがあります。このフォームは、1:n
との関係を持つエンティティに基づいていますWidget
。私がやりたいのは、(で送信されたデータに基づいてwidgets
)特定のサブクラスを作成して、実際のオブジェクトを検証および作成することです。
フォームでは、次のようにフィールドを定義しました。
$builder->add('widgets', 'collection', array(
'type' => new WidgetType(),
'allow_add' => true
));
たとえば、2つのサブクラスとがImageWidget
ありMapWidget
ます。FormTypes
これら2つのエンティティ用に作成しましたが、クライアントは次のデータを送信しています(FOSRestBundleを使用しています)。
...
"widgets": [
{
"widget_type": "map",
"stationId": 543647
},
{
"widget_type": "image",
"image": "data:image/png;data,...."
}
]
そして、プロパティwidget_type
(データベース内のウィジェットタイプを区別するためにDoctrineが使用するプロパティ)に基づいて、フォームでMapWidgetType
最初のエントリImageWidgetType
用と2番目のエントリ用のを作成する必要があります。
これは可能ですか?
私はSymfony2.5を使用しています
このバンドルは問題を解決するはずです:https://github.com/infinite-networks/InfiniteFormBundle#polycollection
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加