Laravel Crinsane / LaravelShoppingCart destroy()不起作用

时间:2018-01-23 06:25:24

标签: php laravel laravel-5 routes package

我在尝试清除Crinsane / LaravelShoppingCart中的购物车时遇到问题,当我点击该路线时,它会返回一个空白页面,其中包含" http://localhost:81/webshop/cart/delete" URL。我认为我的路线命名有问题,我无法弄清楚它是什么。希望有人能帮助我

Route::any('/cart/delete','CartController@delete')->name('cart.delete');

单击链接时我的路线

<th style="width:50%">Product <a class="btn btn-danger btn-sm" href="{{route('cart.delete')}}">Clear cart<i class="fa fa-eraser"></a></th>

这里是我控制器中的功能

public function delete(){
        Cart::destroy();
        return redirect()->back();
    }

我的其他功能有效,我可以显示购物车,编辑购物车,删除他们完美工作的购物车中的一行,但不是清除所有购物车(删除功能)

这是使用https://github.com/Crinsane/LaravelShoppingcart

的包

3 个答案:

答案 0 :(得分:2)

代替:

Cart::destroy();

使用:

Cart::truncate();

从表中删除所有行。

<强>然而

使用Route::any进行破坏性操作(例如删除所有记录)非常不安全。 我建议你至少使用post路由来处理这些操作。

答案 1 :(得分:2)

通过

修改路线
Route::any('/cart/delete/{id}','CartController@delete')->name('cart.delete');

在Controller中是

public function delete()
{
    Cart::destroy();

    return back();
}

在您的html上只需给出一个表单操作,例如:

<form action="{{route('index.cart.empty', $item->rowId)}}" method="post">
     @csrf                      
     @method('DELETE')
  <button type="submit" class="btn btn-dark"> <i class="fa fa-trash-o"></i> CLEAR SHOPPING CART </button>                 
</form>

希望对您有帮助

答案 2 :(得分:1)

您需要使用 truncate()

 public function delete()
    {
        DB::table('Cart')->truncate();
        return redirect()->back();
    }

有效。但是如果您仍有相同的问题,可以在标签下定义DELETE方法。像这样:

<th>
{!! Form::open(['route' => ['cart.delete', $cart->id], 'method' => 'DELETE']) !!}
{!! Form::close() !!}
</th>