symfony2中的会话问题

时间:2015-05-10 20:12:35

标签: symfony

遇到这样的问题:当我点击购物篮中的添加时,我会重定向到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')
        ));
}

我做错了什么。请帮忙。

1 个答案:

答案 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;来自模板参数