在 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中具有相同的会话键时,如何检查会话数组是不是具有唯一的ID