我在symfony中创建购物车时遇到一些问题。 我必须为销售治疗和治疗的酒店创建一个购物车(预订系统),所以我有两种类型的产品可以添加到我的购物车中(两个实体:治疗和治疗)。
Probleme
在我的Paniercontroller中,我创建了购物车,其中购物车中每件商品的ID是固化的ID(如果我添加固化)和治疗ID(我添加治疗),所以当我有两个具有相同ID的项目时,新项目删除旧项目(可能因为治疗和治疗可以有相同的ID,每个人都在不同的表中)
在加入购物车之前,我去测试项目是否已经治愈或治疗。我也想为每个人创造不同的行动,但我不知道这是否能解决问题。 如果有人知道如何做到这一点,谢谢你的帮助。
这是我的Paniercontroller:
public function panierAction()
{
$session = $this->getRequest()->getSession();
//$session->remove('panier');
//die();
if( !$session->has('panier')) $session->set('panier',array());
var_dump($session->get('panier'));
die();
$em = $this->getDoctrine()->getManager();
$cures = $em->getRepository('MainBundle:Cure')->findArray(array_keys($session->get('panier')));
$treatments = $em->getRepository('MainBundle:Treatment')->findArray(array_keys($session->get('panier')));
return $this->render('CmsBundle:Default:reservation-cure-step2.html.twig', array(
'cures' => $cures,
'treatments' => $treatments,
'panier' => $session->get('panier'),
));
}
public function ajouterAction($id)
{
$session = $this->getRequest()->getSession();
if( !$session->has('panier')) $session->set('panier',array());
//$panier [id du produit] ==> quantite
$panier= $session->get('panier');
if(array_key_exists($id, $panier))
{
if($this->getRequest()->query->all() != null )
$panier[$id] = $this->getRequest()->query->all();
}else{
if($this->getRequest()->query->all() != null)
$panier[$id] = $this->getRequest()->query->all();
else
$panier[$id] = 1;
}
$session->set('panier',$panier);
$this->get('session')->getFlashBag()->add('success','élement ajouté avec succés');
return $this->redirect($this->generateUrl('panier'));
}
public function supprimerAction($id)
{
$session = $this->getRequest()->getSession();
$panier = $session->get('panier');
if(array_key_exists($id, $panier))
{
unset($panier[$id]);
$session->set('panier',$panier);
$this->get('session')->getFlashBag()->add('success','élement supprimé avec succés');
}
return $this->redirect($this->generateUrl('panier'));
}
}