0

私はショッピングカートを設計しています。これは、コントローラーでの支払いアクションです。

public function paymentAction()
    {
        $em = $this->getDoctrine()->getManager();
        $securityContext = $this->container->get('security.context');
        $userid=$securityContext->getToken()->getUser()->getId();
        $total = $em->getRepository('ShopperShopBundle:Item')->getTotal1($userid);//get total price

      // var_dump($total);exit;
        //update order table

        $order = new Order();
        $order->setUser1($em->getReference('ShopperShopBundle:User', $userid))
              ->setTprice($total[0][1])
              ->setStatus('Incomplete');

          //var_dump($order);exit;  

        $em->persist($order);

        //empty the cart
        $remove = $em->getRepository('ShopperShopBundle:Item')->findBy(array('user'=>$userid));
        if (!$remove) {
          throw $this->createNotFoundException(
              'Your Cart is empty. If you checked out recently and revisiting the cart, the items are lost. You can go to orders and complete your incomplete transaction. :-('
          );
        }

        $em->remove($remove[0]);
        $em->flush();

        return $this->render('ShopperShopBundle:Default:payment.html.twig',array('categories'=>0,'total'=>$total[0][1]));
    }

Order テーブルに 2 回挿入します。しかし、戻る前に終了すると、注文は一度だけ挿入されます。

これらは私のルートです。

shopper_shop_checkout:
    pattern:  /checkout
    defaults: { _controller: ShopperShopBundle:Default:checkout }

shopper_shop_payment:
    pattern:  /payment
    defaults: { _controller: ShopperShopBundle:Default:payment }

さらに情報が必要な場合は、コメントで質問してください。ページのレンダリング中に問題が発生しました。どういうわけか、挿入クエリが再度呼び出されます。

4

1 に答える 1

0

イベントリスナーで挿入が再度実行されないようにしてください。

于 2013-06-26T10:00:22.543 に答える