AcmePizzaBundle のコードを例として使用して、2 つのエンティティを持つフォームを作成しました。
フォームのMyBundle/Entity/Factory/UploadFactory.php
ファクトリ クラスです。2 つのエンティティ (User と Video) に加えて、3 つ目の UploadType.php フォーム クラスがあります。
// MyBundle/Form/Type/UploadType.php
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('user', new UserType())
->add('video', new VideoType());
}
UserType()
とVideoType()
はフォーム タイプ クラスであり、それぞれのエンティティから必要なフィールドを保持します。
上記はコントローラー/メソッドから呼び出されます。
public function indexAction(){
// create upload
$factory = new UploadFactory();
$form = $this->createForm(new UploadType(), $factory);
}
User エンティティと Video エンティティには、注釈付きの検証があります。これは、2 つのフォームをマージする前は問題なく機能していましたが、現在はサーバー側の検証はありません。
検証が実行されていないと思いますが、これを強制する方法はありますか?
このコードは、ピザ バンドルのコードhttps://github.com/beberlei/AcmePizzaBundle/blob/master/Entity/Factory/OrderFactory.phpに「触発された」ものです。
ありがとう。
編集:
$factory = new UploadFactory();
var_dump($factory);
// gives...
object(Project\MyBundle\Entity\Factory\UploadFactory)#101 (3) {
["user":"Project\MyBundle\Entity\Factory\UploadFactory":private]=> NULL
["video":"Project\MyBundle\Entity\Factory\UploadFactory":private]=> NULL
}