在 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');
}
}
}
在上面的代码中,当我单击 twig 中的删除按钮并且完成 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
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');
}
}
}
在上面的代码中,当我单击 twig 中的删除按钮并且完成 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