laravel 从会话中删除项目

问题描述 投票:0回答:2

我正在使用会话来存储购物车项目。我可以修改会话项目,但在删除它们时遇到问题。这是我一直坚持的功能

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);
php laravel session laravel-5.4
2个回答
0
投票

首先,仅供参考,您不需要将变量包装在

" "
中。

我建议更改将商品添加到购物车的逻辑,从使用

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';
}

0
投票

我想你可以试试这个:

if($request->session()->has('cart.items') && $request->session()->get('cart.items') != '') {

  $request->session()->forget('cart.items.name');

}

希望这对你有用!!!

© www.soinside.com 2019 - 2024. All rights reserved.