Php Laravel 5.2-添加到现有会话数组将覆盖现有会话
我试图通过AJAX在Laravel 5中的会话中存储篮子数据,但每次我尝试将一个项目推送到存储为“basket”值的数组中时,现有的“basket”数组都会被覆盖 以下是我的控制器方法:Php Laravel 5.2-添加到现有会话数组将覆盖现有会话,php,arrays,laravel,session,Php,Arrays,Laravel,Session,我试图通过AJAX在Laravel 5中的会话中存储篮子数据,但每次我尝试将一个项目推送到存储为“basket”值的数组中时,现有的“basket”数组都会被覆盖 以下是我的控制器方法: public function add(Request $request) { $success = false; if ($request->ajax()) { $ticket = Ticket::find((int) $request->get('ticket_
public function add(Request $request)
{
$success = false;
if ($request->ajax()) {
$ticket = Ticket::find((int) $request->get('ticket_id'));
if ($ticket) {
if (!$request->session()->has('basket')) {
$request->session()->put('basket', []);
}
$item = [
'attraction.name' => $ticket->attraction->name,
'ticket.quantity' => $request->get('quantity'),
'ticket.price' => $ticket->price,
];
$request->session()->push('basket', [$ticket->id => $item]);
$success = true;
}
}
return response()->json(['success' => $success]);
}
在第一个实例的basket会话数组中设置了一个项目,但我希望在将更多项目数据发布到此方法时,它会添加到此数组中,而不是覆盖
我希望实现的最终结果是:
Array
(
[basket] => Array
(
[123] => Array
(
[attraction.name] => Attraction 1
[ticket.quantity] => 2
[ticket.price] => 14.5
)
[456] => Array
(
[attraction.name] => Attraction 2
[ticket.quantity] => 3
[ticket.price] => 12
)
)
)
我尝试过使用SessionFacade等效方法,但没有效果:(
任何帮助都将不胜感激。谢谢:)我曾尝试
array\u merge()
,但我的会话再次被覆盖。所以,在再次戴上调试帽之后,我找到了它发生的原因
每次请求后会话数据都没有持久化。由于我的会话没有被记住,$request->session()->has('basket')
的计算结果总是true
,因此每次我的basket会话都被设置回空数组
我需要使用下一行以JSON的形式返回请求,以便会话数据能够持久化。也许这是因为我在AJAX调用中有数据类型:“json”
作为属性
return response()->json($request);
我还采纳了您的建议,抓起了basket会话数组,将新数据推送到其中,并将其放回会话中
分类!谢谢你们两位的帮助:)我遇到了类似的问题,并发现在向会话添加值后,您需要调用
session()->save()代码>我看不出您的代码如何覆盖任何条目。事实上,代码的结果是这样的。它不可能覆盖任何内容。