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