我正在创建一个extbase扩展来处理非常简单的产品订单。 该模型是:
Order --1:n--> OrderItem --1:1--> Product
要订购一系列产品,客户会前往结帐页面并使用基于流体的订单表格。流体模板中的所有选定产品均为{products}
。
OrderController->createAction
通过从给定产品创建OrderItem来处理新订单。
编写代码我希望看起来像这样:
class OrderController
{
public function create(Order $order, array $products)
{
foreach ($products as $product) {
$orderItem = new OrderItem()
->setProduct($product)
->setPrice($product->getPrice());
$order->addOrderItem($orderItem);
}
$this->orderRepository->add($order);
}
}
public function create(Order $order) {
$this->orderRepository->add($order);
}
答案 0 :(得分:0)
我对流体模板的建议是:
// basic form with the order as main object
<f:form action="create" object="{order}">
// each order item with a product, using index to have no array with an empty index (Extbase does not like that)
<f:for each="{products}" key="index" as="product">
// Here you can set the product
<f:form.hidden prpoerty="orderItems.{index}.product" value="{product} />
</f:for>
</f:form>
这应该足以使用您的单行创建操作。
您可以将字段类型从select更改为您想要的任何内容,但__identity
必须说Extbase必须链接哪个记录。
如果您想要新创建orderItems,则需要删除__identity
字段。