Problem
Ich habe die Dokumentation auf der Laravel -Website, Stack Overflow und Google gelesen. Ich bin mir jedoch nicht sicher, ob ich den Unterschied zwischen den Unterschied verstehe Route :: Ressource
Und Route :: Controller
.
Eine Antwort, die ich gefunden habe, sagte Route :: Ressource
war für crud. Jedoch mit Route :: Controller
Wir können dasselbe erreichen wie mit Route :: Ressource
und wir können nur die erforderlichen Aktionen angeben.
Sie scheinen wie Geschwister zu sein:
Route :: Controller ('Post', 'Postcontroller');Wie wir auswählen können, was zu bedienen ist? Was ist die beste Praxis?
Lösung
RESTful Resource Controller
Ein erholsamer Ressourcencontroller legt einige Standardrouten für Sie ein und nennt sie sogar.
Route :: Ressource ('Benutzer', 'usersController');Gibt Ihnen diese benannten Routen:
Verb Pfad Aktion RoutennameUnd Sie würden Ihren Controller so etwas einrichten (Aktionen = Methoden)
Class UsersController erweitert BaseControllerSie können auch wählen, welche Aktionen wie folgt enthalten oder ausgeschlossen sind:
Route :: Ressource ('Benutzer', 'UsersController', [RESTful Resource Controller -Dokumentation
Implizite Controller
Ein impliziter Controller ist flexiblerer. Sie werden anhand des HTTP -Anforderungsarts und -namens an Ihre Controller -Methoden weitergeleitet. Sie haben jedoch keine Routennamen für Sie definiert und es wird alle Unterordner für dieselbe Route erfassen.
Route :: Controller ('Benutzer', 'UserController');Würde Sie dazu führen, dass Sie den Controller mit einer Art erholsamer Namensschema einrichten:
Klasse UserController erweitert BasecontrollerImplizite Controller -Dokumentation
Es ist eine gute Praxis, das zu verwenden, was Sie brauchen, gemäß Ihrer Präferenz. Ich persönlich mag die impliziten Controller nicht, weil sie unordentlich sein können, keine Namen angeben und bei der Verwendung von PHP -Artisanrouten verwirrend sein können. Ich verwende normalerweise rastful Ressourcencontroller in Kombination mit expliziten Routen.
Die andere Meinung ist, dass Sie möglicherweise nicht zu viele Controller für jede Aktion erstellen möchten, die alle CRUD -Methoden enthalten. Verwenden Sie in diesem Fall die impliziten Controller.