Questo è probabilmente un compito semplice da risolvere in Symfony2 ma sono davvero bloccato qui:Symfony2: Come creare un modulo entità con la creazione di più sottoentità?
Sto costruendo un negozio molto semplice. Esistono tre entità: Products
, Customers
e Orders
. L'ultimo contiene tre colonne: customer_id
, product_id
e quantity
. Il negozio consiste semplicemente in una pagina che elenca tutti i prodotti con un campo di selezione per ciascuno per scegliere la quantità, seguito da un modulo per inserire i dati del cliente.
Non ho problemi a creare il modulo per i dati del cliente né a elencare i prodotti stessi (senza i campi di selezione).
Ma come posso creare un modulo che includa i campi selezionati dei prodotti, che quindi dovrebbero diventare entità dell'ordine?
Ho giocato con le raccolte di moduli e comprendo tutti gli esempi forniti con l'aggiunta di tag a un'entità, ecc. Ma non riesco a capire come adattarlo alla mia situazione.
Quello che ho in mente più o meno così:
// 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.
...
ho passato ore su questo. Qualsiasi aiuto è molto apprezzato. Grazie!
Aggiornamento: Alla fine ho funzionato. Ho creato uno OrderFactory
e uno OrderFormType
e ho dovuto modificare un po 'l'intera impostazione. Il AcmePizzaBundle che è menzionato nelle risposte qui sotto è stato davvero un grande aiuto per ottenere le parti mancanti giusto.
Penso che lo stai rendendo più complicato di quanto dovrebbe essere. È necessario un tipo OrdersFormType che includa una raccolta di entità prodotto (per l'elenco di prodotti) e un campo quantità. Quindi incorpora una raccolta di OrdersFormTypes in CustomerFormType. Ma penso che ti risparmierai qualche mal di testa se seguirai uno schema di denominazione più convenzionale. – Cerad