简体   繁体   English

将商品更新到购物车(package-->darryldecode)Laravel 5.7

[英]Update items to shopping cart(package-->darryldecode) Laravel 5.7

My blade file--->我的刀片文件--->

{!! Form::open(['url'=>'/cart/update', 'method'=>'POST']) !!}
<div class="color-quality">
     <div class="color-quality-right">
     <input type="number" name="qty" value="{{ $cartProduct->quantity }}" min="1">
     <input type="hidden" name="id" value="{{ $cartProduct->id }}">
     <input type="submit" name="submit" value="update" class="item_add hvr-outline-out button2">
     {{-- <button type="submit" name="submit" value="update" class="item_add hvr-outline-out button2">Update</button> --}}
     </div>
     </div>
{!! Form::close() !!}

route file-->路由文件-->

Route::post('/cart/update', 'CartController@updateCart');

controller file控制器文件

public function updateCart(Request $request){
    $qty= $request->qty;
    $id = $request->id;

    /*echo $qty;
    echo "<br>";
    echo $id;*/
   Cart::update($id, $qty);
   return redirect('/cart/show');

} }

when i'm echo the file and hit UPDATE btn then i get result both of this id & qty number... return , on the other hand, get some error... ErrorException (E_WARNING) Invalid argument supplied for foreach()当我回显文件并点击 UPDATE btn 然后我得到这个 id 和数量的结果...返回,另一方面,得到一些错误... ErrorException (E_WARNING) Invalid argument supplied for foreach()

C:\xampp\htdocs\larashop\vendor\darryldecode\cart\src\Darryldecode\Cart\Cart.php * update a cart * * @param $id * @param $data * * the $data will be an associative array, you don't need to pass all the data, only the key value * of the item you want to update on it * @return bool */ public function update($id, $data) { if($this->fireEvent('updating', $data) === false) { return false; C:\xampp\htdocs\larashop\vendor\darryldecode\cart\src\Darryldecode\Cart\Cart.php * 更新购物车 * * @param $id * @param $data * * $data 将是一个关联数组,你不需要传递所有的数据,只需要传递你想更新的项目的键值 * @return bool */ public function update($id, $data) { if($this->fireEvent( '更新', $data) === false) { return false; } }

    $cart = $this->getContent();

    $item = $cart->pull($id);

    foreach ($data as $key => $value) {
        // if the key is currently "quantity" we will need to check if an arithmetic
        // symbol is present so we can decide if the update of quantity is being added
        // or being reduced.
        if ($key == 'quantity') {
            // we will check if quantity value provided is array,
            // if it is, we will need to check if a key "relative" is set
            // and we will evaluate its value if true or false,
            // this tells us how to treat the quantity value if it should be updated
            // relatively to its current quantity value or just totally replace the value
            if (is_array($value)) {
                if (isset($value['relative'])) {
                    if ((bool)$value['relative']) {
                        $item = $this->updateQuantityRelative($item, $key, $value['value']);
                    } else {
                        $item = $this->updateQuantityNotRelative($item, $key, $value['value']);
                    }
                }
            } else {
                $item = $this->updateQuantityRelative($item, $key, $value);
            }

Arguments "Invalid argument supplied for foreach()"参数“为 foreach() 提供的参数无效”

try this:试试这个:

Cart::update($id, ['quantity' => ['relative' => false,
                                   'value' => $qty
                                 ]
            ]);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM