如何在同一个数组中的Symfony会话中存储多个值,并且有很多请求?

时间:2017-01-25 14:52:18

标签: php session symfony

我正在开发书店项目,我有一个带有按钮添加到购物车的书籍列表,点击它可以通过某个名称保存会话中的书籍ID。但问题是我怎么能在会话中保存很多这个ID所以我以后可以在foreach中访问它们?

/**
 * @Route("/cart/{bookId}", name="AppBundle_Book_addingToCartAction")
 */
public function addingToCartAction(Request $request, int $bookId)
{
    // getting session 
    $sessionCart = $request->getSession();

    // when user click on button Add to Cart , i send ID of book here(and others book IDs),
    // so i need to save that ID inside a session(i was thinking making of some array
    // with all this values), so how can I do this,i trying like this:
    $sessionCart->set('BookIDs', array('Book'.$bookId => $bookId));

    return $this->render('AppBundle:Books:shopingCart.html.twig', array(
        'id' => $bookId,
    ));
}

2 个答案:

答案 0 :(得分:1)

我认为最简单的解决方案就是这样。

1)在购物车的会话对象中创建一个密钥,然后您可以将其与会话中的其他内容隔离开来。

2)以与任何其他数组相同的方式获取并设置其内容。

3)除非您需要其他任何东西,否则请将bookId保留在那里。

/**
 * @Route("/cart/{bookId}", name="AppBundle_Book_addingToCartAction")
 */
public function addingToCartAction(Request $request, int $bookId)
{
    // getting session 
    $sessionCart = $request->getSession();

    $cart = $sessionCart->get('cart');

    $cart[] = $bookId;

    $sessionCart->set('cart', $cart);

    return $this->render('AppBundle:Books:shopingCart.html.twig', array('id' => $bookId));
}

答案 1 :(得分:0)

你应该从会话变量中获取数组。并在此数组中添加新书Id。否则你将覆盖这个变量。

$arrayOfBook = $sessionCart->get('BookIDs');
if ($arrayOfBook == null){
  arrayOfBook = [];
}
arrayOfBook[] = $bookId;
$sessionCart->set('BookIDs', arrayOfBook);