我正在开发书店项目,我有一个带有按钮添加到购物车的书籍列表,点击它可以通过某个名称保存会话中的书籍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,
));
}
答案 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);