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.