Search code examples
laravellaravel-5laravel-routingputhttp-delete

Method PUT and DELETE don't work in Laravel


I have a problem with my routes in Laravel.

When I use the following route:

Route::resource('user', 'PostsController');

The methods PUT and DELETE work fine with the functions destroy and update in my controller, but when I use the following route:

Route::delete('{$id}', function($id){
    return "Remover o usuário ".$id;
});

and

Route::put('{$id}', function($id){
    return "Editar o usuário ".$id;
});

I have the following error:

NotFoundHttpException in RouteCollection.php line 161:

in RouteCollection.php line 161
at RouteCollection->match(object(Request)) in Router.php line 780
at Router->findRoute(object(Request)) in Router.php line 610
at Router->dispatchToRoute(object(Request)) in Router.php line 596
at Router->dispatch(object(Request)) in Kernel.php line 267
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in HandleCors.php line 42
at HandleCors->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 46
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 104
at Pipeline->then(object(Closure)) in Kernel.php line 149
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 116
at Kernel->handle(object(Request)) in index.php line 56
at require_once('C:\xampp\htdocs\apiRest\public\index.php') in server.php line 21

Bellow follow the image to more details how I send the request

Request

I'm using the Postsman to send the request.

Please, can anyone help me??


Solution

  • In Laravel route parameters are defined without a $ like {id} instead of {$id}. See the docs for more info.

    So in your case:

    Route::delete('{id}', function($id){
        return "Remover o usuário ".$id;
    });
    

    and:

    Route::put('{id}', function($id){
        return "Editar o usuário ".$id;
    });