【问题标题】:Laravel Crinsane/LaravelShoppingCart destroy() doesn't workLaravel Crinsane/LaravelShoppingCart destroy() 不起作用
【发布时间】:2018-07-01 21:40:28
【问题描述】:

我在尝试清除 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的包

【问题讨论】:

  • 截断方法是查询生成器的一部分。尝试:Cart::truncate(); 而不是 Cart::destroy();
  • 我仍然无法工作,但感谢您的帮助:)

标签: php laravel laravel-5 routes package


【解决方案1】:

代替:

Cart::destroy();

使用:

Cart::truncate();

这会从表中删除所有行。

但是:

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

【讨论】:

  • 它仍然返回一个具有相同 URL 的空白页面,我认为这是路由命名
【解决方案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>

希望对你有帮助

【讨论】:

    【解决方案3】:

    你需要使用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>
    

    【讨论】:

    • 我没有购物车表,我使用 Crinsane/LaravelShoppingCart 作为购物车,所以它使用自定义会话
    • 我知道这很有帮助,我给了一点,但它仍然为我显示一个空白页:
    • 您确定路线运行良好吗?如果你不确定。试试 dd(' ');在删除功能中。
    • dd('');还是空白页不行,一定是我的路线,因为它没有得到功能
    • 我是说如果你是新手。你需要在 dd 中写一些东西。 dd('blabla');如果页面显示“blabla”路线完美运行。比你需要考虑的功能。如果“blabla”没有出现在页面上,你必须考虑 web.php 例如我的删除路线是: Route::delete('page/deleting', 'MyController@deletecart')->name('deletecart') ;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多