【问题标题】:How to update quantity of item in sessions laravel?如何更新会话 laravel 中的项目数量?
【发布时间】:2017-11-08 19:06:01
【问题描述】:

我在购物车视图中创建了一个发布表单,您可以在其中更改商品的数量。此表单被发送到控制器中的 updateCart 方法。数量似乎在更新,但没有正确存储。我是 laravel 的新手,所以请尽量保持解释简单:) 我哪里出错了?我尝试了以下方法:

public function updateCart(Request $request, $productnummer)
{
    $aantal = $request->input('update-aantal');
    $cart = Session::get('cart');


    if (Session::has('cart')) {
        foreach($cart->items as $item)
        {
            if ($item['item']['productnummer'] == $productnummer){
                $item['qty'] = $aantal;

                break;
            }
        }
        $request->session()->put('cart', $cart);
        Session::save();
        dd(Session::get('cart'));
    }
    return view('product.cart', ['products' => $cart->items, 'totalPrice' => $cart->totalPrice]);
}

额外信息:

卡片模型

class Cart
{
public $items = null;
public $totalQty = 0;
public $totalPrice = 0;

public function __construct($oldCart)
{
    if ($oldCart){

        $this->items = $oldCart->items;
        //dd($this->items = $oldCart->items);
        $this->totalQty = $oldCart->totalQty;
        $this->totalPrice = $oldCart->totalPrice;
    }
}

public function add($item, $id, $aantal)
{
    $storedItem = ['qty' => 0,'price' => $item->prijs, 'item' => $item];
    if ($this->items){
        if (array_key_exists($id, $this->items)) {
            $storedItem = $this->items[$id];
        }
    }
    $storedItem['qty'] += $aantal;
    $storedItem['price'] = $item->prijs * $storedItem['qty'];
    $this->items[$id] = $storedItem;
    $this->totalQty += $aantal;

    $this->totalPrice += ($item->prijs * $this->totalQty);
}

路线

Route::post('/update-cart/{productnummer}', ['uses' => 'ProductController@updateCart', 'as' => 'product.updateCart']);

【问题讨论】:

    标签: php laravel-5 routes shopping-cart


    【解决方案1】:

    尝试Session::put('cart', $cart) 而不是$request->session()->put('cart', $cart)。我以前从未使用过$request->session(),但看起来它只是在修改请求的会话,而不是全局会话。

    编辑:是的,查看请求类的 session() 方法,它声明“获取与请求关联的会话”,因此您不会通过运行 Session::get('cart') 来获得它,因为它来自全局会议。

    【讨论】:

      猜你喜欢
      • 2017-01-07
      • 2019-02-22
      • 2020-04-19
      • 2017-06-10
      • 2021-09-17
      • 2018-02-06
      • 1970-01-01
      • 1970-01-01
      • 2017-01-08
      相关资源
      最近更新 更多