私はDoctrineとNette Frameworkのショッピングカートをプログラムします。 addItem
方法があります:(セッションカートに追加)Doctrineショッピングカートの後に注文を追加:未定義のインデックス
public function addItem($item) {
$cart = $this->getCartSection();
$product = $this->product_facade->getProduct($item['voucher_id']);
if (isset($cart->cart_items[$product->getId()])) {
$cart->cart_items[$product->getId()]['amount'] += $item['amount'];
} else {
$cart->cart_items[$product->getId()] = array(
'voucher' => $product,
'amount' => $item['amount']
);
}
}
はまた
public function add($creator, $data) {
$order = new Orders();
$order->setPrice($data['price']);
$order->setStatus($this->status_facade->getStatus(self::NEW_STATUS_ID));
$order->setPayment($this->payment_facade->getPayment($data->payment));
$order->setDate(new DateTime());
$order->setUser($creator);
foreach ($data['cart'] as $item) {
$order_product = new OrdersProduct();
$order_product->setQuantity($item['amount']);
$order_product->setProduct($item['voucher']);
$order->addItem($order_product);
}
$this->em->persist($order);
$this->em->flush();
}
をdbに追加注文の方法がある私は、ボタンをクリックした後にエラーが発生します
」を順に追加]Undefined index: 00000000659576f8000000004032b93e
ただし、どこがエラーであるかはわかります。メソッドadd
があり、このメソッドはSessionからProductエンティティを取得します。
$order_product->setProduct($item['voucher']);
私はカート内の総額をカウントしたいのでセッションに製品エンティティが必要です。 私は
$order_product->setProduct(
$this->product_facade->getProduct(4)
);
(この変数はProduct
から実体である)番号または$item['voucher']->getId()
でaddメソッドsetProduct
に呼び出す場合、私はセッションから、製品のエンティティを呼び出す理由、それはOKですが、私は知らないがwronkです。これは同じ結果と同じ方法です。
問題を解決できますか?なぜワロンですか?
ありがとう、私はあなたが私を理解してくれることを願っています。
OKに
merge
を呼び出す必要があり、それは、セッションへのエンティティの保存間違ったことです。セッションの直列化オブジェクト内。セッションにはIDだけを保存する必要があります。 – ondrusu