遇到这样的问题:当我点击购物篮中的添加时,我会重定向到basket_action
,但我没有显示我添加的产品。这是我的行动
/**
* @Route("/basket", name="basket_action")
* @param Request $request
* @return mixed
*/
public function basketAction(Request $request)
{
$session = $request->getSession();
if(!$session->has('basket_action'))
{
$session->set('basket_action', array());
}
$em = $this->getDoctrine()->getEntityManager();
$products = $em->getRepository('ModelBundle:Products')
->findArray(array_keys($session->get('basket_action')));
return $this->render("CoreBundle:Basket:basket.html.twig",
array(
'products' => $products,
'basket' => $session->get('basket')
));
}
我做错了什么。请帮忙。
答案 0 :(得分:1)
很遗憾给你任何一个例子,因为它看起来像你错过了一些代码或逻辑。从我在
中看到的内容$session = $request->getSession();
if(!$session->has('basket_action'))
{
$session->set('basket_action', array());
}
你只是尝试分析,是' basket_action'存储到会话,如果没有,则为其分配一个空数组。但你是否想要设置" basket_action"有真实数据吗?
所以如果你有其他动作,请显示此代码,如果没有,那么你应该将setter添加到会话中,并且填充数据为' basket_action'
<强>更新强>
好的,我看到你似乎错过了代码中的一些逻辑
仍然很难猜到你究竟需要什么,但如果预计会通过点击&#34;添加&#34;来添加每个新产品。并从会话中拾取所有旧的添加产品,然后它看起来像是:
/**
* @Route("/basket", name="basket_action")
* @param Request $request
* @return mixed
*/
public function basketAction(Request $request)
{
$session = $request->getSession();
$cartIds = $session->get('basket_action', array());
$cartIds[] = $request->query->get('id');
$session->set('basket_action', $cartIds);
$em = $this->getDoctrine()->getEntityManager();
$products = $em->getRepository('ModelBundle:Products')
->findArray($cartIds);
return $this->render("CoreBundle:Basket:basket.html.twig",
array(
'products' => $products,
));
}
P.S。对不起,我无法知道你想从$ session-&gt; get(&#39; basket&#39;)&#34;得到什么,因为我不知道你在那里存了什么,所以我刚刚删除了&#34;&#39;篮子&#39; =&GT; $会话而&GT;获得(&#39;篮&#39;)&#34;来自模板参数