每個專案都包含一個插件串列作為復選框。每次我檢查插件時,我都想將 addon_id 推送到插件陣列中。它將 addon_id 推送到會話,但沒有正確推送。
此代碼將專案添加到購物車(注意:我正在創建一個空插件陣列):
$cart = session()->get('cart', []);
if(isset($cart[$request->item_id])) {
$cart[$request->item_id]['qty'] ;
} else {
$cart[$request->item_id] = [
'id' => $request->item_id,
'category_id' => $request->category_id,
'price' => $request->item_price,
'item_name' => $request->item_name,
'qty' => 1,
'addons' => [],
];
}
session()->put('cart', $cart);
這段代碼將插件推送到專案:
if(isset($request->item_id)) {
session()->push('cart.addons', $request->addon_id);
}
$cart = session()->get('cart', []);
return response()->json([
'message' => 'Addon added',
'cart' => $cart,
]);
這就是現在推送插件的方式:
Array
(
[59] => Array
(
[id] => 59
[category_id] => 27
[price] => 3.78
[item_name] => Simple Sandwich
[qty] => 1
[addons] => Array
(
)
)
[57] => Array
(
[id] => 57
[category_id] => 27
[price] => 5.99
[item_name] => Cheese Burger
[qty] => 1
[addons] => Array
(
)
)
[addons] => Array
(
[0] => 31
)
[addons] => Array
(
[0] => 61,
[1] => 60,
[2] => 31
)
)
我需要他們像這樣被推:
Array
(
[59] => Array
(
[id] => 59
[category_id] => 27
[price] => 3.78
[item_name] => Simple Sandwich
[qty] => 1
[addons] => Array
(
[0] => 31
)
)
[57] => Array
(
[id] => 57
[category_id] => 27
[price] => 5.99
[item_name] => Cheese Burger
[qty] => 1
[addons] => Array
(
[0] => 61,
[1] => 60,
[2] => 31
)
)
)
我試圖找到一個解決方案,但似乎沒有什么能按照我需要的方式作業。
非常感謝您的幫助。
uj5u.com熱心網友回復:
最初,您正在創建一個關聯陣列,其中item_id的鍵是,但是當您追加時,addons您并沒有指定應該更新哪個陣列,因此您將不得不item_id更改addons
if(isset($request->item_id)) {
session()->push('cart.addons', $request->addon_id);
}
像這樣:
if(isset($request->item_id)) {
$cart = session()->get('cart');
if(isset($cart[$request->item_id]) {
array_push($cart[$request->item_id]['addons'],$request->addon_id);
session()->put('cart',$cart);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/497302.html
