我正在使用会话来存储购物车项目。我可以修改会话项目,但在删除它们时遇到问题。这是我一直坚持的功能
public function removecartitems(Request $request)
{
$id = $request->input('id');
$items = Session::get('cart.items', []);
foreach ($items as &$item) {
if ($item['id'] == $id) {
unset($item);
}
}
//Session::set('cart.items', $items);
$request->session()->put('cart.items', $items);
return 'removed';
}
这就是我在会话中添加项目的方式
$Item = array("id"=>"$productid", "name"=>"$name", "qty"=>"$qty", "rate"=>"$rate", "preview"=>"$preview", "front"=>"$front", "back"=>"$back");
$request->session()->push('cart.items', $Item);
首先,仅供参考,您不需要将变量包装在
" "
中。
我建议更改将商品添加到购物车的逻辑,从使用
push()
更改为 put()
,并使用产品 ID:
$item = [
"id" => $productid,
"name" => $name,
"qty" => $qty,
"rate" => $rate,
"preview" => $preview,
"front" => $front,
"back" => $back,
];
$request->session()->put('cart.items.' . $item['id'], $item);
那么你的删除方法将类似于:
public function removecartitems(Request $request)
{
$request->session()->forget('cart.items.' . $request->input('id'));
return 'removed';
}
我想你可以试试这个:
if($request->session()->has('cart.items') && $request->session()->get('cart.items') != '') {
$request->session()->forget('cart.items.name');
}
希望这对你有用!!!