【问题标题】:Laravel Delete Method: MethodNotAllowedHttpException in RouteCollection.php line 233:Laravel 删除方法:RouteCollection.php 第 233 行中的 MethodNotAllowedHttpException:
【发布时间】:2021-03-16 16:09:04
【问题描述】:

我试图从列表中删除购物车。当我试图删除它时,它显示一个错误。下面是我的代码:

Web.php

Route::post('cart/delete/{id}','ProductController@deleteCart');

blade.php

<a href="{{ url('/cart/delete',$row->id) }}" class="remove_item">
    <i class="fa fa-times"></i>
</a>
    
<form action="{{ url('/cart/delete',$row->id)}}" method="POST" style="display: none;">
    {!! Form::hidden('id',$row->id) !!}
</form>

控制器.php

public function deleteCart($id){
    $cart = Cart::find($id);
    $cart->destroy();
    return Redirect::to('/shop-cart');
}

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    只需更改以下代码行:

    Route::post('cart/delete/{id}','ProductController@deleteCart');
    

    进入:

    Route::get('cart/delete/{id}','ProductController@deleteCart');
    

    此错误的原因是向 POST 路由发送 GET 请求。在您的代码中,您通过调用 URL 来发送 GET 请求。

    <a href="{{ url('/cart/delete',$row->id) }}" class="remove_item">
       <i class="fa fa-times"></i>
    </a>
    

    否则,如果您想保持路由原样(作为 POST 路由),只需使用以下代码并相应地进行一些调整:

    <form  action="{{ url('/cart/delete') }}" method="POST" style="display: none;">
        {!! Form::hidden('id', $row->id) !!}
        <input type="submit" value="Submit">
    </form>
    

    最好将路由修改如下,因为不需要 '/{id}' 部分,因为我们将 id 与 POST 请求一起发送:

    Route::post('cart/delete','ProductController@deleteCart');
    

    使用以下方法将 Http\Request 导入您的控制器:

    use Illuminate\Http\Request;
    

    并按如下方式更新您的控制器功能:

    public function deleteCart(Request $request){
        $cart = Cart::find($request['id']);
        $cart->destroy();
        return Redirect::to('/shop-cart'); 
    }
    

    但对于这种情况,GET 路由似乎是避免复杂性的好选择。

    【讨论】:

      【解决方案2】:

      删除 a href 链接,因为它会发送 GET 请求,而不是 POST。在表单中添加提交按钮:

      <form  action="{{ url('/cart/delete/'.$row->id) }}" method="POST" style="display: none;">
          {!! Form::hidden('id', $row->id) !!}
          {!! Form::submit('delete') !!}
      </form>
      

      【讨论】:

        【解决方案3】:

        错误表明没有像您尝试调用的路由。您的路线文件中有这样的路线:/cart/delete/{id} 需要一个 id,您可以从表单 /cart/delete?id=theid

        中调用它

        修复

        从您的提交网址更改此:/cart/delete',$row-&gt;id)

        对此:/cart/delete/{{$row-&gt;id}}

        【讨论】:

        • 我使用了这个href="{{ url('/cart/delete/'.$row-&gt;id) }}",但仍然遇到同样的错误
        • 顺便说一句,您的“提交按钮”必须在您的表单内,并且只需提交您不需要 元素的表单
        • 也尝试将您的destroy 更改为delete
        猜你喜欢
        • 2017-07-15
        • 1970-01-01
        • 2017-11-04
        • 2015-10-29
        • 2017-10-12
        • 2017-03-13
        • 1970-01-01
        • 2015-09-22
        • 2016-08-30
        相关资源
        最近更新 更多