これはおそらく Symfony2 で解決するのは簡単な作業ですが、私は本当にここで立ち往生しています:
とてもシンプルなお店を作っています。Products
、Customers
、およびの3 つのエンティティがありますOrders
。customer_id
最後の列には、 、product_id
、およびの 3 つの列が含まれていますquantity
。ショップは、すべての製品を一覧表示するページと、それぞれに数量を選択するための選択フィールドと、それに続く顧客データを入力するフォームで構成されています。
顧客データのフォームを作成することも、製品自体をリストすることも (選択フィールドなしで) 問題ありません。
しかし、注文エンティティになる製品の選択フィールドを含むフォームを作成するにはどうすればよいでしょうか?
フォーム コレクションをいじってみましたが、エンティティにタグを追加するなど、与えられたすべての例を理解しています。しかし、自分の状況に合わせて調整する方法がわかりません。
私が念頭に置いていることは、次のようになります。
// Create new customer
$customer = new Customer();
// At this point, create form and validate it.
// Having trouble here, need a hint to get it right.
...
// If form is ok, loop thru all the products.
// Since I do not know yet how to define the form,
// I don't know yet what to loop over, too.
foreach( ..... ){
if($quantity > 0){
$order = new Order();
$order->setQuantity($quantity);
$order->setProduct($product);
$customer->addOrder($order);
}
}
// then persist $customer, cascading its orders.
...
私はこれに何時間も費やしてきました。どんな助けでも大歓迎です。ありがとう!
更新:
最終的には機能しました。と を作成し、OrderFactory
設定OrderFormType
全体を少し変更する必要がありました。以下の回答で言及されている AcmePizzaBundle は、不足している部分を正しく取得するのに実際に非常に役立ちました。