【问题标题】:Symfony session array works fine in controller but not in twigSymfony 会话数组在控制器中工作正常,但在树枝中却不行
【发布时间】:2015-03-16 16:00:35
【问题描述】:

我有一个名为 $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 中访问此会话,我可以完美地查看和访问它。

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

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

但这让我在 twig 中有 2 个服务数组。

即使我删除会话并重新分配它,我最终也会遇到同样的问题。 我正在使用以下代码从会话中删除 products 数组。 $session->remove('products');

我做错了什么导致 2 个数组或服务?

【问题讨论】:

  • 你有什么理由不能做$session->set('products, $products)?甚至$session->set('products', array("services" => $products["services"]));
  • 我刚试过$session->set('products, $products),这解决了问题,被困在这个问题上好几个小时。您想将此添加为答案,以便我接受吗?
  • 很抱歉听到这个消息,也许休息一下,泡杯茶,散散步。
  • 你说得对,我需要休息一下。非常感谢

标签: php arrays symfony session twig


【解决方案1】:

自从

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

要正确设置它,请使用:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 2021-08-10
    • 2023-03-06
    • 2017-08-16
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多