产品未从购物车中删除

product is not deleting from cart

你好,我正在尝试从购物车中删除产品,但它没有删除,有任何修复它的建议,当我点击提交按钮时,它显示 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);
        }
    }
}

blade 文件

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

您的路线应该是 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');

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

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

你在blade中定义为method="POST"。和 "get" 在路线中。所以你需要将动词更改为 Route::post