【问题标题】:Symfony 5.2 add to session arraySymfony 5.2 添加到会话数组
【发布时间】:2021-03-17 23:02:16
【问题描述】:

我想将产品添加到我的会话数组中,但它总是覆盖现有产品并且只有一个。

    /**
     * @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
        ]);
    }

有什么建议吗?

【问题讨论】:

  • 您尝试过什么调试问题?它甚至与 Symfony 或会话的概念有关吗?

标签: arrays symfony session


【解决方案1】:

您每次都覆盖会话变量,而不是添加新产品。尝试获取产品,添加新产品,然后设置会话:

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
    ]);
}

如果你想拥有不同的产品,你可以使用 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
    ]);
}

【讨论】:

  • 以及我如何才能添加到不重复的产品中,像这样“if(isset($products['id']))”?
猜你喜欢
  • 1970-01-01
  • 2018-06-27
  • 2014-03-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-26
  • 1970-01-01
  • 2021-05-28
  • 1970-01-01
相关资源
最近更新 更多