товар не удаляется из корзины - PullRequest
0 голосов
/ 21 октября 2019

привет, я пытаюсь удалить товар из корзины, но он не удаляется, есть предложения по его устранению, когда я нажимаю на кнопку отправки, он говорит 404 | не найден

контроллер:

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

Ответы [ 3 ]

0 голосов
/ 21 октября 2019

Вам необходимо изменить код в контроллере, как показано ниже.

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');
}
0 голосов
/ 21 октября 2019

Вы определили это как method = "POST" в блейде. и «добраться» в пути. Поэтому вам нужно изменить глагол на Route :: post

0 голосов
/ 21 октября 2019

Ваш маршрут должен быть 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');
...