我无法弄清楚为什么我的removeAction
函数在经过多次尝试后会起作用。有时它是第一次工作而其他人我必须一遍又一遍地点击(4或5次)直到它工作。
我知道它有效,因为产品ID已从用户购物车中删除。
我不确定这是否有帮助,但我检查了max_execution_time(30
)对照函数的microtime()
(float(0.0148420333862)
)。
当我转储$quantity
和$cart
时,我始终会看到正确的产品ID。
removeAction function
:
/**
* Removes a 'product' from the cart
*
* @Route("/{id}/remove", name="product_remove")
* @METHOD("GET")
* @Template()
*/
public function removeAction(Request $request, $id) {
// $time = microtime(true);
$em = $this->getDoctrine()->getManager();
$product = $em->getRepository('ShopBundle:Product')->find($id);
$cart = $em->getRepository('ShopBundle:UserCart')->findOneBy(['user' => $this->getUser(), 'submitted' => false]);
$quantity = $em->getRepository('ShopBundle:Quantity')->findOneBy(['product' => $product->getId()]);
//get product id from the cart and then remove it
// product gets removed but only after a random # of click on the remove button...
//ini_get('max_execution_time');
//var_dump(ini_get('max_execution_time'));
// dump($quantity);
// dump($cart);
$em->remove($quantity);
$em->flush();
$this->addFlash('notice', 'The product: '.$product->getName().' was removed!');
//var_dump(microtime(true) - $time); die;
return $this->redirectToRoute('product_showCart');
}
答案 0 :(得分:1)
这是一个我对你的代码做出一些假设的例子,但这大致是我希望事情能够发挥作用并且更加简单。
您应该能够检查购物车并找到匹配的商品并将其删除,如果没有,那么您应该重构购物车的构造方式。
我猜你的原始代码在经过大量点击后工作的原因是它将产品从所有推车中移除,直到它到达你的购物车,这显然不太理想。
UpdateWindow