Laravel Delete方法:RouteCollection.php第233行中的MethodNotAllowedHttpException:

时间:2017-03-19 09:49:42

标签: php laravel laravel-5

我试图从列表中删除购物车..当我尝试删除它时,它显示上面的错误。

这是我的控制器,查看部分和方法

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



 <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>

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

3 个答案:

答案 0 :(得分:2)

只需更改以下代码行:

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以及POST请求,因此不需要'/{id}'部分:

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路线似乎是避免复杂性的好选择。

答案 1 :(得分:0)

删除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>

答案 2 :(得分:0)

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

中调用此ID

修复

从提交网址/cart/delete',$row->id)

更改此设置

对此:/cart/delete/{{$row->id}}