2016-10-05 1 views
1

Vom Lesen auf MVC, möchte ich von der Verwendung von Anfragen von clientseitigen Skripten weg und konzentrieren sich auf einen Hauptrouter.Mvc Routing - Friendly URLs

Von der Forschung, Urls in etwa so aussehen:

http://www.example.com/controller/action/params 

Wenn jedoch bei StackOverflows und ähnlichen Rahmenbedingungen blicke es wie folgt aus:

http://stackoverflow.com/users/1365260/example 

Kann jemand bitte erklären, was passiert ist das anders? 1365260 sieht aus wie die Benutzer ID & Beispiel ist sein Benutzername, also müssen diese Parameter und Benutzer eindeutig der Controller sein.

Woher weiß dieses Framework, welche Aktion ausgeführt werden soll? Dh: suchen, anzeigen, aktualisieren

+0

Ziemlich URLs, Routing/Dispatching-Anfragen und faux "MVC" sind alle orthogonal. Sie können entweder ohne die anderen haben. Und die vereinfachten Modul → Funktion → Args Path-Struktur wird nur nicht überall angewendet. – mario

+0

Als Randnotiz, müsste das Verzeichnis/id/Benutzername erstellt werden oder wird .htaccess verwendet? Weil Sie eine 404 nicht gefunden bekommen würde und alle diese Verzeichnisse erstellen würde Server memorey verwenden, was ist also die beste Praxis? @mario – KDOT

+0

Nun, Stack Overflow insbesondere verwendet nicht einmal Apache. Aber ja, eine RewriteRule kann jede virtuelle Pfadstruktur abbilden, ohne dass die Verzeichnisse überhaupt existieren. Beachten Sie, dass ein .htaccess-Regelsatz normalerweise nur zum Testen verwendet wird. Es gibt oft andere Möglichkeiten für hübsche URLs. – mario

Antwort

4

Dies ist nicht wirklich

/controller/action/params 

Sie nichts als eine Route definieren.

http://www.example.com/this/is/a/route 

Von Laravel Rahmen perspectives- Jedes Mal, wenn Sie einen URI den Rahmen standardmäßig besuchen leitet Ihre Anfrage an einen Index-Seite, wo es Ihre URI in der Routenliste überprüft. Wo jede Route an eine Controller-Methode gebunden ist, die Ihre Anfrage bearbeitet. Mit dieser Methode können Sie beispielsweise Suchen, Anzeigen, Erstellen, Aktualisieren, Löschen usw. durchführen.

In diesem Routing-System können Sie auch Parameter übergeben. Hier in Ihrem Beispiel

http://stackoverflow.com/users/1365260/example 

diese Route wird in Routenliste und ein Verfahren definiert ist, mit ihm und Benutzer-ID, den Benutzernamen sind diese Parameter gebunden. Wenn diese Route besucht wird, führt sie die Methode aus und zeigt das Profil der Benutzer-ID und des Benutzernamens an, den sie aus dem Parameter route erhält.

Hoffe, das hilft.

+0

Diese erste Umleitung ist der verwirrende Teil, wie kann die Datei umleiten, aber den gleichen URI-Zustand beibehalten? Es sei denn, das Verzeichnis/uniqueId/username ist nicht vorhanden und wird mit htaccess gemappt. Ist es möglich, so etwas zu tun? – KDOT

+0

Ja, es ist mit htaccess zugeordnet. Dies leitet alle Anfragen an eine einzige Datei weiter. –

+0

Wie ändert sich der URI-Status nicht? Ein ReWrite sollte den URI sicher in den Pfad mappen wie/id/username -> index +1 und markierte Antwort für die Erklärung aber - geschätzt! – KDOT