我在尝试清除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();
}
我的其他功能有效,我可以显示购物车,编辑购物车,删除他们完美工作的购物车中的一行,但不是清除所有购物车(删除功能)
的包答案 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>