2016-07-24 14 views
0

Ich versuche, die PUT-Methode auf einem meiner Controller zu entfernen, aber ich kann keinen Weg finden, dies zu tun, ohne jede Methode auf eine Funktion zu übertragen und zuzuordnen.Begrenzen Sie, welche Methoden für eine Route zulässig sind

Ich habe folgendes in meiner Route-Datei:

Route::group(['prefix' => 'api'], function() { 
    $defaultOptions = ['except' => ['create', 'edit']]; 

    Route::resource('recipies', 'RecipieController', $defaultOptions); 
    //This is the one that I am trying to restrict 
    Route::resource('recipies.ingredients', 'Recipie\IngredientController', ['except' => ['create', 'edit', 'show']]); 

    Route::resource('ingredients', 'IngredientController', $defaultOptions); 
}); 

Ich weiß, dass ich folgendes tun können, um zu erreichen, was ich will, aber ich hoffe, dass es eine Möglichkeit ist, wo ich welche Methoden begrenzen sind erlaubt

Während das obige funktioniert, fühle ich, dass es chaotisch ist und hoffe auf eine sauberere Lösung.

Antwort

0

PUT Methode wird auf update Methode eines Ressourcencontrollers zugeordnet. Fügen Sie diese Methode der Liste der ausgeschlossenen Methoden hinzu:

Route::resource('recipies.ingredients', 'Recipie\IngredientController', ['except' => ['create', 'edit', 'show', 'update]]); 
+0

Das Problem damit ist es entfernt dann auch die 'PATCH' Anfrage Methode, die ich behalten möchte. Ich möchte, dass die API in der Lage ist, eine Ressource zu aktualisieren ("PATCH"), die gesamte Sache nicht zu ersetzen ("PUT"). – JRLambert

+0

Leider behandeln Laravels Resource Controller die beiden Methoden als gleich. Es liegt an Ihnen, ob Ihre Implementierung die Ressource schreibt/ersetzt oder nur "patcht". Wenn Sie PUT verbieten möchten, können Sie entweder eine Middleware für diese Route hinzufügen, die die MethodNotAllowedException-Ausnahme auf PUT auslöst, oder sie einfach im Controller selbst behandeln, was auch immer für Sie funktioniert. –