Hallo habr Kürzlich habe ich einer Überprüfung einer Website zugestimmt, die auf freiberuflicher Basis bestellt wurde. Ich hatte erwartet, Controller zu sehen, die alles tun und mehr als 200 Zeilen (und andere Manifestationen von schlechtem Code) belegen, aber alles war ziemlich anständig. Die Validierung lag nicht im Controller, was durchaus üblich ist. Manchmal gab es natürlich einige PSR-2-Inkonsistenzen, aber alles sah gut aus, bis ich in die Datei mit den Routen schaute. Es besetzte mehrere Bildschirme und hatte Kommentare zu Routengruppen. Ich kontaktierte den Entwickler und er sagte, dass alles ein bisschen "gewachsen" sei und stimmte zu, es zu beheben. In der nächsten Version sah ich, dass er mehrere Klassen mit statischen Methoden erstellte, in die er den Code übertrug und diese wie üblich mit Autorisierung aufrief. Dann erinnerte ich mich, dass ich dies bereits erlebt hatte und auf ein solches Argument gestoßen war: "Die Dokumentation sagt nichts darüber aus, wie man Routen zu verschiedenen Dateien nimmt." Nur ein paar Minuten später fand ich einen Artikel und schickte ihn an den Entwickler. Nach einer halben Stunde erhielt ich die Routen in normaler Form und entschied, dass dieser Artikel für viele Anfänger nützlich sein würde. So wurde diese freie Übersetzung geboren.
Wenn Sie die RouteServiceProvider-Datei noch nie bearbeitet haben, heißen Sie cat willkommen.
Wenn Sie mit einem kleinen Projekt arbeiten und nur ein paar Routen haben, gibt es keine Probleme. Wenn die Anzahl der Routen jedoch zu groß ist, wird das Arbeiten in einer Datei schwierig, insbesondere wenn Sie Seiten für verschiedene Benutzer, Administratoren usw. haben.
Zunächst erstellt Laravel 4 Dateien:
- api.php
- console.php
- channels.php
- web.php
Angenommen, Sie möchten für jeden Benutzertyp ein Projekt mit zehn Seiten erstellen:
- Administrator [Website-Einstellungen, Statistiken usw. ]
- Benutzer [Registrierung, Login, Profilverwaltung usw. ]
- Gäste [Blog, Kontakte usw. ]
Erstellen Sie zwei Verzeichnisse innerhalb von
Routen :
- web - Hier sind alle mit der Weboberfläche verbundenen Routen aufgeführt.
- API - Hier sind alle API-bezogenen Routen
Wir verschieben die
Datei "api.php" von "
routes" in das
Verzeichnis " routes / api" und "
web.php" in "
routes / web" und
belassen die verbleibenden
Dateien "console.php" und "
channels.php" in "routes".
Erstellen Sie die Datei
admin.php in
routes / web . Diese Datei enthält alle mit dem Administrator
verknüpften Webrouten und
erstellt dort die Datei
user.php für die mit dem Benutzer
verknüpften Routen.
app / Providers / RouteServiceProvider.php - Diese Datei ist für das Herunterladen aller Routen unserer Anwendung verantwortlich. Die
map () -Methode ruft die
Methoden mapApiRoutes () und
mapWebRoutes () auf, um die
bereits verschobenen Dateien
web.php und
api.php zu laden.
Korrigieren Sie also die Pfade zu den
Routendateien .
protected function mapWebRoutes() { Route::middleware('web') ->namespace($this->namespace) ->group(base_path('routes/web/web.php')); }
protected function mapApiRoutes() { Route::prefix('api') ->middleware('api') ->namespace($this->namespace) ->group(base_path('routes/api/api.php')); }
Erstellen Sie nun neue Methoden für
routen / web / admin.php und
routen / web / user.php in
RouteServiceProvider.php protected function mapAdminWebRoutes() { Route::middleware('web') ->namespace($this->namespace) ->prefix('admin') ->group(base_path('routes/web/admin.php')); }
protected function mapUserWebRoutes() { Route::middleware('web') ->namespace($this->namespace) ->prefix('user') ->group(base_path('routes/web/user.php')); }
Bitte beachten Sie, dass in diesem Code Namespace, Middleware, Präfix usw. für Pfade hinzugefügt werden können.
Als nächstes rufen Sie sie einfach von map () auf:
public function map() { $this->mapApiRoutes(); $this->mapWebRoutes(); $this->mapAdminWebRoutes(); $this->mapUserWebRoutes(); }
Letzter Schritt:
Öffne routes / web / user.php und füge eine Testroute hinzu:
Route::get('/test', function () { return response(' ', 200); });
Gehen Sie zu site.local / user / test, Sie sollten den Text "Test Route" sehen.