9

这可能是在 Symfony2 中解决的一个简单任务,但我真的被困在这里:

我正在建立一个非常简单的商店。共有三个实体:ProductsCustomersOrders。最后一个包含三列:customer_idproduct_idquantity。该商店仅包含一个列出所有产品的页面,其中每个产品都有一个选择字段以选择数量,然后是一个用于输入客户数据的表格。

我为客户数据创建表单或列出产品本身(没有选择字段)都没有问题。

但是如何创建一个包含产品选择字段的表单,然后这些字段应该成为订单实体?

我玩弄了表单集合,并且我确实了解所有给定的示例,包括向实体添加标签等。但我无法掌握如何根据我的情况调整它。

我的想法是这样的:

// 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 实际上对正确处理缺失的部分很有帮助。

4

1 回答 1

9

看一个例子:AcmePizzaBundle。它有您需要的 4 个实体:Pizza、Order、OrderItem、Customer。

于 2012-05-17T17:19:15.590 回答