在 laravel 6 中更新会话数组值

Posted

技术标签:

【中文标题】在 laravel 6 中更新会话数组值【英文标题】:update session array value in laravel 6 【发布时间】:2020-03-25 19:21:01 【问题描述】:

我在 laravel 中有一个包含数组值的会话,我想在页面刷新时编辑一个数组成员

我的会话是这样的

            $data = [
            'product' => $request->input('product'),
            'price' => $request->input('price'),
            'quantity' => 1
            ];

            $request->session()->put('cart_'. $request->input('id') , $data);

我想在页面刷新时加上价格值

喜欢这个

页面刷新前

//session like this

[
'product' => 'test 1',
'price' => 300,
'quantity' => 1
]


页面刷新后

//session like this

[
'product' => 'test 1',
'price' => 600,
'quantity' => 2
]


新值保存在同一个会话中,当页面再次刷新时,会话值加上新的价格和数量

【问题讨论】:

【参考方案1】:

当然,您可以像普通变量一样执行此操作。从 Session 中获取它,更改您的数组,然后使用新数据从控制器中重新保存它。

所以在你的控制器中:

$data= Session::get('data', []);  // Empty array if hasn't been set / nothing in cart

// Here you would have your business logic, this is just static to demonstrate
$data = [
          'product' => 'test 1',
          'price' => 600,
          'quantity' => 2
];

Session::set('data', $data);

您在刷新时询问过。页面的刷新不应该改变数据。 IE 如果用户已添加到购物车并单击提交,那么它将通过您的控制器进行更新并保存到 Session 如上所述。如果他们将商品添加到购物车并点击刷新,您可能不希望 data 值更改,因为他们刚刚点击刷新,但未提交要添加到购物车的值。因此,一旦购物车被合法更新(通过控制器),该会话数据就会被存储。因此,在每次刷新时,您的页面(或控制器)都可以从

中提取该会话数据
Session::get('data', [])

希望对你有帮助

【讨论】:

以上是关于在 laravel 6 中更新会话数组值的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 不会删除/更新会话

当所有检索值在laravel中具有相同的会话键时,如何检查会话数组是不是具有唯一的ID

Laravel:如何访问 AppServiceProvider 中的会话值?

Laravel - 从会话数组中获取项目

我想自学laraver,请诸位前辈给一些建议,谢谢

从 laravel 中的一个后缀获取所有会话