laravel从会话中删除项目

时间:2017-07-28 13:37:57

标签: php laravel session laravel-5.4

我正在使用会话来存储购物车物品。我可以修改会话项但无法删除它们。这是我坚持的功能

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);

2 个答案:

答案 0 :(得分:0)

我想你可以试试这个:

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

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

}

希望这对你有用!!!

答案 1 :(得分:0)

首先,仅仅是一个FYI,您不需要将变量包装在" "中。

我建议您更改使用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';
}

希望这有帮助!