【问题标题】:product is not deleting from cart产品未从购物车中删除
【发布时间】:2020-02-17 05:32:08
【问题描述】:

他试图从购物车中删除产品但它没有删除,任何修复它的建议,当我点击提交按钮然后它说 404|not found

控制者:

public function deleteCartProduct(Product $product)
{
    $oldCart = Session::has('cart') ? Session::get('cart') : null;
    $cart = new Cart($oldCart);
    $cart->delProduct($product);
    Session::put('cart', $cart);

    return redirect()->route('product.cart')->with('flash_message_success', 'Product product has been removed from Cart');
}

型号

public function deleteProduct($product)
{
    if ($this->contents) {
        if (array_key_exists($product->product_slug, $this->contents)) {
            $delProduct = $this->contents[$product->slug];
            $this->totalQty -= $delProduct['qty'];
            $this->totalPrice -= $delProduct['price'];
            array_forget($this->contents, $product->slug);
        }
    }
}

刀片文件

    @foreach($contents as $slug => $cartItem)
                      <form action="{{ route('deleteCartProduct', $product) }}" method="POST">
                          @csrf
                        <tr class="table-row">
                            <td class="column-1">
                                <div class="cart-img-product b-rad-4 o-f-hidden">
                                    <img src="{{ URL::to('/') }}/images/backend_images/product_images/{{ $cartItem['product']->product_image }}" alt="IMG-PRODUCT">
                                </div>
                            </td>
                            <td class="column-2">{{ $cartItem['product']->product_name }}</td>
                            <td class="column-3">${{ $cartItem['product']->product_price }}</td>
                            <td class="column-4">
                                <div class="flex-w bo5 of-hidden w-size17">
                                    <button class="btn-num-product-down color1 flex-c-m size7 bg8 eff2">
                                        <i class="fs-12 fa fa-minus" aria-hidden="true"></i>
                                    </button>

                                    <input class="size8 m-text18 t-center num-product" type="number" name="num-product1" value="{{ $cartItem['qty'] }}">

                                    <button class="btn-num-product-up color1 flex-c-m size7 bg8 eff2">
                                        <i class="fs-12 fa fa-plus" aria-hidden="true"></i>
                                    </button>
                                </div>
                            </td>
                            <td class="column-5">${{ $cartItem['price'] }}</td>
                            <td class="column-5">
                                <input type="submit" class="btn btn-danger value="Remove Product">
                            </td>
                        </tr>
                      </form>
                      @endforeach

路线:

  Route::get('/cart/delete-product/{id}','ProductController@deleteCartProduct')->name('deleteCartProduct');

【问题讨论】:

  • 在模型中,您定义了deleteProduct 方法,然后在控制器中,您使用了$cart-&gt;delProduct($product); 方法。所以需要在控制器中更改方法名称,如$cart-&gt;deleteProduct($product);

标签: laravel eloquent laravel-5.8


【解决方案1】:

您的路线应该是 Route::delete 而不是 Route::get,然后在表单中添加以下内容:

@method('delete')

我在按钮上看到了你的错误:

<input type="submit" class="btn btn-danger value="Remove Product">

用这个改变它:

<input type="submit" class="btn btn-danger" value="Remove Product">

缺少报价..

编辑

你的路线应该是这样的:

Route::delete('/cart/delete-product/{id}','Admin\ProductController@deleteCartProduct')->name('deleteCartProduct');

【讨论】:

【解决方案2】:

您需要更改控制器中的代码,如下所示。

public function deleteCartProduct(Product $product)
{
     $oldCart = Session::has('cart') ? Session::get('cart') : null;
     $cart = new Cart($oldCart);
     $cart->deleteProduct($product);
     Session::put('cart', $cart);

     return redirect()->route('product.cart')->with('flash_message_success', 'Product product has been removed from Cart');
}

【讨论】:

  • 当我点击 del btn 时会发生变化,然后它会转到这个 url 127.0.0.1:8000/cart/delete-product 并显示 404 notfound
  • 这是我的 btn 但它显示如下:ibb.co/ZhskxzT
  • 实际上问题出在按钮上,这是我的 btn 但它显示如下:ibb.co/ZhskxzT
【解决方案3】:

您在刀片中将其定义为 method="POST"。并在路线中“获得”。所以你需要把动词改成Route::post

【讨论】:

  • 实际上问题出在按钮上,这是我的 btn 但它显示如下:ibb.co/ZhskxzT
猜你喜欢
  • 1970-01-01
  • 2022-08-23
  • 1970-01-01
  • 1970-01-01
  • 2022-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多