Ich möchte wissen, ob es möglich ist, einem Ressourcencontroller in Laravel neue Methoden hinzuzufügen, und wie Sie dies tun.
Ich weiß, dass diese Methoden die Standardeinstellung sind (Indexieren, Erstellen, Speichern, Bearbeiten, Aktualisieren, Zerstören). Jetzt möchte ich dem gleichen Controller zusätzliche Methoden und Routen hinzufügen.
Ist das möglich?
::resource
hinausgehen müssen, da sonst die Fehlermeldung "Keine Abfrageergebnisse für Modell" angezeigt wird.Route::get('foo/{id}', ...)
. Dies verschluckt alle Routen, beginnend mitfoo
und mit einem zusätzlichen Segment, einschließlichfoo/bar
.Ich habe das gerade getan, um eine GET "delete" -Methode hinzuzufügen.
Nach dem Erstellen Ihrer Dateien müssen Sie nur noch hinzufügen
zu 'Providern' in Ihrer App / config.php
Bearbeiten Sie den Routenalias in derselben Datei:
Ändern in
Und stellen Sie sicher, dass diese Dateien automatisch geladen werden. Sie müssen sich in einem Verzeichnis befinden, das Sie in Ihrer composer.json (Abschnitt "Autoload") haben.
Dann müssen Sie nur noch:
Und dies (siehe letzte Zeile) ist das Ergebnis, wenn Sie ausführen
php artisan routes
:Das sind meine Quelldateien:
ExtendedRouteFacade.pas
ExtendedRouter.pas
ExtendedRouteServiceProvider.pas
quelle
Ja, es ist möglich ..
In meinem Fall füge ich method: data hinzu, um die Anforderung für /data.json in der HTTP-POST-Methode zu verarbeiten.
Das habe ich getan.
Zunächst erstreckt wir Illuminate \ Routing \ ResourceRegistrar neue Methode hinzuzufügen , Daten
Erstellen Sie danach Ihren neuen ServiceProvider oder verwenden Sie stattdessen AppServiceProvider .
Fügen Sie beim Starten der Methode diesen Code hinzu:
dann :
zu deiner Route hinzufügen:
Check by
php artisan route:list
Und Sie finden neue Methode 'Daten'quelle
Probieren Sie es aus. Geben Sie zusätzliche Methoden wie getData () usw. usw. ein. Dies hat bei mir funktioniert, um route.php sauber zu halten
quelle
Verwenden von Laravel> 5 Suchen Sie die Datei web.php im Ordner "Routen" und fügen Sie Ihre Methoden hinzu
Sie können route :: resource verwenden, um alle diese Methoden in einer Zeile zu indizieren, anzuzeigen, zu speichern, zu aktualisieren und in Ihrem Controller zu zerstören
quelle
Fügen Sie einfach eine neue Methode und eine Route zu dieser Methode hinzu.
In Ihrem Controller:
Und in Ihren Webrouten
Stellen Sie nur sicher, dass die Methode im Controller öffentlich ist.
quelle
Das funktioniert auch ziemlich gut. Sie müssen keine weiteren Routen hinzufügen. Verwenden Sie einfach die show-Methode des Ressourcencontrollers wie folgt:
Ich verwende die Standardeinstellung, um eine benutzerdefinierte Fehlerseite zu werfen.
quelle