Symfony 会话数组在控制器中工作正常但在树枝中不工作

Symfony session array works fine in controller but not in twig

我有一个名为 $products 的数组,我将其分配给 symfony 会话。

数组

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

现在,如果我使用 {{ dump(app.session.get('products')) }}twig 中访问此会话,我可以完美地查看和访问它。

这些会话值实际上用在购物车中,每个产品旁边都有一个删除 link,如果您单击删除 link,该特定产品应该从会话数组中删除,因此为了实现这一点,我正在使用调用以下函数的删除路由来删除数组的那部分并将更新的数组重新分配给相同的会话变量

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 个阵列或服务的我做错了什么?

$products = $session->get('products');

要正确设置它,请使用:

$session->set('products', $products);