Symfony 5.2 添加到会话数组
Symfony 5.2 add to session array
我想将产品添加到我的会话数组,但它总是覆盖现有产品并且只有一个。
/**
* @Route("/{id}", name="add", methods={"GET"})
*/
public function add(Product $product, Request $request): Response
{
$session= $request->getSession();
$session->set('products', array(
'list' => $product,
));
$this->addFlash('success', 'add');
return $this->render('index.html.twig', [
'product' => $product
]);
}
有什么建议吗?
您每次都覆盖会话变量,而不是添加新产品。尝试获取产品,添加新产品,然后设置会话:
public function add(Product $product, Request $request): Response
{
$session= $request->getSession();
$products = $session->get('products', []);
$session->set('products', array(
'list' => array_merge($products['list'] ?? [], [$product])
));
$this->addFlash('success', 'add');
return $this->render('index.html.twig', [
'product' => $product
]);
}
如果您想要不同的产品,您可以使用产品['id']作为键
public function add(Product $product, Request $request): Response
{
$session= $request->getSession();
$products = $session->get('products', []);
$products[$product['id']] = $product;
$session->set('products', products);
$this->addFlash('success', 'add');
return $this->render('index.html.twig', [
'product' => $product
]);
}
我想将产品添加到我的会话数组,但它总是覆盖现有产品并且只有一个。
/**
* @Route("/{id}", name="add", methods={"GET"})
*/
public function add(Product $product, Request $request): Response
{
$session= $request->getSession();
$session->set('products', array(
'list' => $product,
));
$this->addFlash('success', 'add');
return $this->render('index.html.twig', [
'product' => $product
]);
}
有什么建议吗?
您每次都覆盖会话变量,而不是添加新产品。尝试获取产品,添加新产品,然后设置会话:
public function add(Product $product, Request $request): Response
{
$session= $request->getSession();
$products = $session->get('products', []);
$session->set('products', array(
'list' => array_merge($products['list'] ?? [], [$product])
));
$this->addFlash('success', 'add');
return $this->render('index.html.twig', [
'product' => $product
]);
}
如果您想要不同的产品,您可以使用产品['id']作为键
public function add(Product $product, Request $request): Response
{
$session= $request->getSession();
$products = $session->get('products', []);
$products[$product['id']] = $product;
$session->set('products', products);
$this->addFlash('success', 'add');
return $this->render('index.html.twig', [
'product' => $product
]);
}