【问题标题】:how to increment the quantity of a product in laravel session如何在 laravel 会话中增加产品的数量
【发布时间】:2020-08-23 05:38:07
【问题描述】:

我的购物车会话是

Array
(
    [0] => Array
        (
            [id] => 123-XXL
            [prod_name] => Grey Shirt
            [prod_rate] => 2100
            [size] => XXL
            [qty] => 1
            [ind_tot] => 2100
        )

    [1] => Array
        (
            [id] => 134-XL
            [prod_name] => red_shirt
            [prod_rate] => 1800
            [size] => XL
            [qty] => 1
            [ind_tot] => 1800
        )
)

现在我尝试将会话的 qty 值增加 1,

我的增量函数是

public function increment(Request $request){
        $id = $request->id;
        $rate = $request->rate;
        $qty = $request->qty;
        $ind_tot = $request->ind_tot;
        $input = $request->all();
        $qty_up = $qty+1;
        $ind_tot = $ind_tot+$rate;
        if(Session::has('cart_sess')){
            $cart = Session::get('cart_sess');
            foreach ($cart as $key => $value){
                if($cart[$key]['id'] == $id){
                    $cart = $cart->replace([$cart[$key]['qty'] => $qty_up, $cart[$key]['ind_tot'] => $ind_tot]);
                    Session::set('cart_sess', $cart);
                }
            }
        }
        return response()->json($qty_up, 200);
    }

当我控制台显示错误为

500 (Internal Server Error)

如何更新 laravel 会话数组中的值。

【问题讨论】:

  • 您的 $cart 中没有名为 quan 的键
  • 哦,是的...谢谢...
  • @bhucho 我尝试更正,但它再次显示相同的错误。我的递增代码是否正确?
  • 你为什么不这样做if($cart[$key]['id'] == $id){ $value['qty'] = $qty_up; $value['ind_tot'] = $ind_tot; }然后在foreach之后Session::set('cart_sess', $cart);
  • 您是否在 .env 中设置了 APP_DEBUG=true?然后你可以看到堆栈跟踪,而不仅仅是一个 500

标签: laravel session shopping-cart laravel-7


【解决方案1】:

你可以这样做

public function increment(Request $request){
        $id = $request->id;
        $rate = $request->rate;
        $qty = $request->qty;
        $ind_tot = $request->ind_tot;
        $input = $request->all();
        $qty_up = $qty+1;
        $ind_tot = $ind_tot+$rate;
        if($request->session()->has('cart_sess')){
            $cart = $request->session()->get('cart_sess');
            foreach ($cart as $key => $value){
                if($cart[$key]['id'] == $id){
                    $value['qty'] = $qty_up; 
                    $value['ind_tot'] = $ind_tot;
                }
            }
        }
        $request->session()->put('cart_sess', $cart);
        return response()->json($qty_up, 200);
    }

【讨论】:

  • 我正在使用 Laravel 7,现在它显示调用未定义方法 Illuminate\Session\Store::set() 的新错误
  • 已编辑答案,laravel 7 使用 put 而不是 set 参见此处laravel.com/docs/7.x/session#storing-data
  • 是的,我明白了 bhucho...谢谢你,我已经用这个做了一个多星期了,我是 laravel 的新手,再次感谢你 bhucho
  • 或者你可以把Session::set()改成Session::put()
猜你喜欢
  • 2020-12-16
  • 1970-01-01
  • 2018-04-18
  • 2021-11-24
  • 1970-01-01
  • 1970-01-01
  • 2021-06-17
  • 2021-10-29
  • 1970-01-01
相关资源
最近更新 更多