繁体   English   中英

在 php/symfony 中取消设置会话数组的有效方法

[英]Effective way to unset session array in php/symfony

php unset 正在工作,但在重新加载会话数据时仍然存在:我正在构建简单的 addtocart 并从 php/symfony5 中的购物车中删除,但我无法在 symfony 会话中从多维数组中取消设置数组。

^ array:3 [▼
0 => array:1 [▼
  "items" => array:4 [▼
    0 => 9
    1 => "Dry fruit"
    2 => "1234"
    3 => "250g"
  ]
]
1 => array:1 [▼
   "items" => array:4 [▼
   0 => 8
   1 => "Pumpkin"
   2 => "123"
   3 => "x"
 ]

]

这是我的购物车控制器:

        $basket = $session->get('basket',[]);
    dump($basket);
    $size = $session->get('size');
    if($request->isMethod('POST')){
       $id = $request->request->get('0');
       foreach($basket as $key => $value){
           if($value['items'][0] == $id){
            unset($basket[$key]['items']);
            dd($basket);
            //$session->set('basket',[]);
            //return $this->redirectToRoute('cart');
           }
       }

    }

在上面的代码中,当我单击树枝中的删除按钮并且 dd($basket) 完成时,数组为空,如下所示:

^ array:3 [▼
0 => [] //empty
1 => array:1 [▼
"items" => array:4 [▼
  0 => 8
  1 => "Pumpkin"
  2 => "123"
  3 => "x"
]

]

但是,当我评论 dd($basket) 并重新加载页面时,数组就像以前一样(似乎恢复了 idk),如果我取消注释 $session->set('basket',[]); 一切都是空的。

我想在这里实现的是,如何从会话多维数组中删除数组?

您只需将会话变量设置为更新后的$basket值。

// get a copy of the basket from the session
$basket = $session->get('basket',[]);

// do whatever to update $basket here

// overwrite the basket in the session
$session->set('basket', $basket);

// then return a Response

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM