我有一个名为$products
的数组,我将其分配给symfony会话。
ARRAY
Array
(
[services] => Array
(
[0] => Array
(
[id] => 1
[icon] => bus.png
[name] => Web Development
[cost] => 500
)
[1] => Array
(
[id] => 2
[icon] => ok-shield.png
[name] => Saadia
[cost] => 200
)
[2] => Array
(
[id] => 3
[icon] => car.png
[name] => Web Development 2
[cost] => 200
)
)
)
这就是我将其分配给会话的方式
$session = $request->getSession();
$session->set('products', array('services' => $products));
现在,如果我使用twig
在{{ dump(app.session.get('products')) }}
中访问此会话,我可以完全查看和访问它。
这些会话值实际上用在购物车中,每个产品旁边都有一个删除链接,如果你点击删除链接,特定产品应该从会话数组中删除,所以为了达到这个目的,我使用的删除路由是调用以下函数来删除该数组的那一部分,并将更新的数组重新分配给相同的会话变量
public function CartRemoveAction($id, Request $request){
$session = $request->getSession();
$products = $session->get('products');
foreach($products['services'] as $key => $service)
{
if($service['id'] == $id)
{
unset($products['services'][$key]);
break;
}
}
$session->set('products', array(
'services' => $products,
));
return $this->render('featureBundle:Default:cart.html.twig');
}
但这让我留下了2个服务阵列。
即使我删除会话并重新分配,我也会遇到同样的问题。
我使用以下代码从会话中删除products
数组。
$session->remove('products');
我做错了哪个导致2个数组或服务?
答案 0 :(得分:1)
由于
$products = $session->get('products');
要正确设置,请使用:
$session->set('products', $products);