Ich habe die Dokumente auf der Laravel-Website, Stack Overflow und Google gelesen, verstehe aber den Unterschied zwischen Route::resource
und immer noch nicht Route::controller
.
Eine der Antworten besagte, dass Route :: resource für Rohöl war. Mit Route :: controller können wir jedoch dasselbe erreichen wie mit Route :: resource und nur die erforderlichen Aktionen angeben.
Sie scheinen wie Geschwister zu sein:
Route::controller('post','PostController');
Route::resource('post','PostController');
Wie können wir auswählen, was verwendet werden soll? Was ist eine gute Praxis?
Antworten:
RESTful Resource Controller
Ein RESTful-Ressourcencontroller richtet einige Standardrouten für Sie ein und benennt sie sogar.
Gibt Ihnen diese benannten Routen:
Und Sie würden Ihren Controller so einrichten (Aktionen = Methoden)
Sie können auch auswählen, welche Aktionen wie folgt eingeschlossen oder ausgeschlossen werden sollen:
RESTful Resource Controller-Dokumentation
Impliziter Controller
Ein impliziter Controller ist flexibler. Sie werden basierend auf dem HTTP-Anforderungstyp und -Namen an Ihre Controller-Methoden weitergeleitet. Sie haben jedoch keine Routennamen für Sie definiert und es werden alle Unterordner für dieselbe Route abgefangen.
Würde Sie dazu bringen, den Controller mit einer Art RESTful-Namensschema einzurichten:
Implizite Controller-Dokumentation
Es ist empfehlenswert, das zu verwenden, was Sie benötigen. Ich persönlich mag die impliziten Controller nicht , weil sie chaotisch sein können, keine Namen angeben und bei der Verwendung verwirrend sein können
php artisan routes
. Normalerweise verwende ich RESTful Resource Controller in Kombination mit expliziten Routen.quelle
resource.edit
zeigt eine Bearbeitungsansicht an, im Grunde das Formular zum Bearbeiten einer vorhandenen Ressource.resource.edit
undresource.create
sind in der Regel für eine Benutzeroberfläche ... Rendern einer Ansicht mit HTML-Formularen. Diese Formulare würden PUT / POSTresource.update
undresource.store
jeweils. Wenn Sie dies nicht tun, können Sie sie einfach ignorieren und die Methoden edit () und create () in Ihrem Controller entfernen.Für die Routensteuerungsmethode müssen wir nur eine Route definieren. Bei der Get- oder Post-Methode müssen wir die Route separat definieren.
Mit der Ressourcenmethode werden mehrere Routen erstellt, um eine Vielzahl von Restful-Aktionen auszuführen.
Hier die Laravel- Dokumentation dazu.
quelle