Programmierung mit Yii2 Routing und URL-Erstellung

Wenn Sie fragen: "Was ist Yii?" Auschecken Einführung in das Yii-Framework, Hier werden die Vorteile von Yii beschrieben und ein Überblick über Yii 2.0 gegeben.

Einführung in das Routing

In dieser Programmierserie mit Yii2 leite ich die Leser beim Einsatz des Yii2-Frameworks für PHP. 

Im heutigen Tutorial werde ich die Routing- und URL-Erstellung in Yii überprüfen. Wenn eine Browseranforderung in der Datei index.php Ihrer Yii-Anwendung eingeht, muss sie analysiert werden, um herauszufinden, welcher Controller und welche Methode aufgerufen werden soll. Das ist Routing. Der umgekehrte Vorgang der Verknüpfung mit Teilen Ihrer Anwendung ist die URL-Erstellung. Dies geschieht am besten programmgesteuert.

Yii bietet viel Flexibilität beim Verwalten des Routings und beim Generieren von Links. Folgen Sie mir, wenn ich die Grundlagen bespreche.

Bevor wir anfangen, denken Sie daran, ich versuche, an den folgenden Diskussionen teilzunehmen. Wenn Sie eine Frage oder ein Thema haben, schreiben Sie bitte einen Kommentar oder kontaktieren Sie mich unter Twitter @reifman. 

Hinweis: Wenn Sie die Lücke zwischen den Episoden der Programmierserie Yii bemerkt haben, liegt dies daran, dass ich es musste Gehirnoperation im letzten Jahr. Vielen Dank für Ihre Geduld und Ihre Unterstützung. Es ist schön, regelmäßig wieder zu schreiben. Ich freue mich darauf, Yii2 weiter zu behandeln.

Hintergrund

Yiis URL-Manager ist die Anwendungskomponente, die zum Analysieren eingehender Anforderungen (parseRequest ()) sowie zum programmgesteuerten Generieren neuer URLs (createUrl ()) verwendet wird..

Anfragen werden in Routen analysiert, die folgende Form haben:

ControllerID / ActionID

Im Wesentlichen weist URL Manager Yii an, welche Controller- und Aktionsmethode erstellt und aufgerufen werden soll.

In Ihrer gesamten Anwendung müssen Sie URLs generieren, die auf Anforderung von Benutzern ordnungsgemäß analysiert werden können. Verwenden createUrl () Dadurch wird sichergestellt, dass eingehende Anforderungen erfolgreich zugeordnet werden können.

Hier ist ein Beispiel:

Verwenden Sie yii \ helpers \ Url; // Url :: to () ruft UrlManager :: createUrl () auf, um eine URL zu erstellen. $ Url = Url :: to (['message / view', 'id' => 100]);

Ohne ein MVC-Framework kann jede PHP-Datei in Ihrer Anwendung direkt auf Anforderungen reagieren. Dies bedeutet, dass Sie die Sicherheit für jede Datei verwalten müssen. Mit MVC und URL Manager wird grundlegende Sicherheit auf zentraler Ebene bereitgestellt, und der Zugriff auf Ihre Anwendung wird weitgehend kontrolliert. Dies ist einer der Hauptgründe, sich im Vanilla PHP-Frameworks Rock nicht zu stören!

Lassen Sie uns noch ein paar Details zum heutigen Thema ansprechen.

Routing

Anforderungen von Benutzern werden über den Webbrowser über das Web in Form von URLs an Ihren Server gesendet. Schauen wir uns einen von einem Benutzer an, der eine Anmeldeseite in meiner Startserienanwendung Meeting Planner anfordert:

https://meetingplanner.io/index.php/site/login

Meine Anwendung verwendet hübsche URLs in Yii (siehe unten). weniger Abfragevariablen beachten. Andernfalls könnte die URL so aussehen:

https://meetingplanner.io/index.php?r=site/login

Auf jeden Fall, parseRequest verarbeitet die URL und erstellt und ruft SiteController.php mit auf actionLogin ().

Bei hübschen URLs überprüft der URL-Manager die registrierten Regeln. In Meeting Planner befinden sie sich in der allgemeinen Konfigurationsdatei:

'components' => ['urlManager' => ['class' => 'yii \ web \ UrlManager',… 'rules' => ['/'=>'/Aussicht', '//'=>'/','/'=>'/',' defaultRoute '=>' / site / index ',],],

Wenn keine Regel übereinstimmt oder ein Fehler beim Erreichen eines Controllers und einer Aktion auftritt, wird ein 404-Fehler, yii \ web \ NotFoundHttpException-Ausnahme, ausgelöst.

Oben gibt es jedoch eine defaultRoute Legen Sie fest, dass bei SiteController actionIndex die Startseite aufgerufen wird, die nicht übereinstimmende URL-Anforderungen abdeckt.

Schauen wir uns eine der obigen Regeln genauer an:

'/'=>'/Aussicht',

Wenn Sie eine Anforderung für einen Controller erhalten, gefolgt von einem Wort (\ w+) gefolgt von einem Schrägstrich und einer Nummer (\ d+), diese Anfrage mit übereinstimmendem Namen und Aufruf an die Controller-Datei senden actionView ($ id) mit der Nummer, d.h.. treffen / sehen / 130 Anrufe MeetingController.php actionView (130).

Das Definieren Ihrer Regeln ist wichtig und kann die Gesamtleistung oder Reaktionszeit Ihrer Website verbessern oder beeinträchtigen. Sie möchten vielleicht mehr über Yiis erweiterte Parametrisierung von Routen erfahren, um die Leistung zu optimieren. Schreibregeln können detaillierter werden, auf die ich heute nicht eingehen möchte.

Hübsche URLs

Wie bereits erwähnt, wechseln die hübschen URLs von Yiis parameterbasiertem Routing zu einem pfadbasierten Routing. Diese URL fordert beispielsweise das Anzeigen einer Besprechung mit der ID 130 an.

https://meetingplanner.io/meeting/130

Oder diese URL fordert zum Anzeigen eines Ortes namens El Diablo Coffee auf:

https://meetingplanner.io/place/el-diablo-coffee-co

Unter yii2: Sluggable Behavior (Envato Tuts +) erfahren Sie, wie Sie mit Yii2 programmieren können, um mehr über das Implementieren von Slugs zum Verwalten dieser Arten von benannten URLs zu erfahren.

Um Pretty URLs zu aktivieren, müssen Sie sie aktivieren enablePrettyUrl im urlManager:

'urlManager' => ['class' => 'yii \ web \ UrlManager', // Deaktivieren Sie index.php 'showScriptName' => false, // Deaktivieren von r = Routen 'enablePrettyUrl' => true, 'rules' => Array ('/'=>'/Aussicht', '//'=>'/','/'=>'/',),],

Hinweis: Zu diesem Zeitpunkt können Sie auch die index.php in der URL mit deaktivieren showScriptName; Ich habe jedoch immer noch Schwierigkeiten, URLs ohne index.php in meinem aktuellen Anwendungsprojekt zu erstellen. Dies aufzuspüren, steht auf meiner Aufgabenliste.

Sie müssen auch eine .htaccess-Datei erstellen und aktivieren mod_rewrite für Apache:

RewriteEngine on # Wenn ein Verzeichnis oder eine Datei vorhanden ist, verwenden Sie es direkt. RewriteCond% REQUEST_FILENAME! -F RewriteCond% REQUEST_FILENAME! -D # Andernfalls leiten Sie es an die index.php RewriteRule weiter. index.php

CatchAll-Modus

Ein weiteres nettes Feature von Yii Routing ist die Möglichkeit, Ihre Anwendung einfach in den Wartungsmodus zu versetzen. Definiere einfach eine catchAll Einstellung in der Anwendung Konfiguration, Aktion und Ansicht:

 dirname (dirname (__ DIR__)). '/ vendor', 'language' => 'de', // deutsch 'catchAll' => ['site / offline'], 'components' => ['urlManager' => [ 

Ich habe auch ein hinzugefügt actionOffline in SiteController.php und eine Offline.php-Ansicht.

URLs erstellen

Yii stellt eine Hilfsmethode yii \ helpers \ Url :: to () zur Verfügung, um Links in Ihrer Anwendung zu erstellen, die den Parsing-Regeln entsprechen. Durch die programmgesteuerte Erzeugung von Links mit der Infrastruktur von Yii wird die Verwaltbarkeit und Portabilität Ihres Anwendungscodes erhalten.

Hier einige Beispiele zum Erstellen von URLs aus Yiis Dokumentation:

Verwenden Sie yii \ helpers \ Url; // erstellt eine URL zu einer Route: /index.php?r=post%2Findex echo Url :: to (['post / index']); // erstellt eine URL zu einer Route mit Parametern: /index.php?r=post%2Fview&id=100 echo Url :: to (['post / view', 'id' => 100]); // erstellt eine verankerte URL: /index.php?r=post%2Fview&id=100#content echo Url :: to (['post / view', 'id' => 100, '#' => 'content']) ); // erstellt eine absolute URL: http://www.example.com/index.php?r=post%2Findex echo Url :: to (['post / index'], true); // erstellt eine absolute URL mithilfe des https-Schemas: https://www.example.com/index.php?r=post%2Findex echo Url :: to (['post / index'], 'https');

Wenn das hübsche URL-Format aktiviert ist, unterscheiden sich die erstellten URLs natürlich.

Hier ein Beispiel, wie ich einen Link im Meeting-Rastersteuerelement für Meeting Planner generiere:

Rückkehr '
$ model-> id]). '">". $ model-> subject.'
'. $ model-> getMeetingParticipants ($ model-> id).'
';

Ich füge auch eine Reihe von Links in ausgehende E-Mails für Meeting Planner ein, für die eine Reihe identischer Argumente erforderlich sind, um den Benutzerzugriff zu überprüfen. Ich habe einen Helfer zum Erstellen dieser Befehle erstellt, der verwendet wird URL: bis ():

class MiscHelpers öffentliche statische Funktion buildCommand ($ meeting_id, $ cmd = 0, $ obj_id = 0, $ actor_id = 0, $ auth_key = ") return Url :: to (['meeting / command', 'id' => $ meeting_id, 'cmd' => $ cmd, 'actor_id' => $ actor_id, 'k' => $ auth_key, 'obj_id' => $ obj_id], true);

Das Schreiben von rohem PHP-Code zum manuellen Erstellen solcher Links wäre zeitaufwändig, fehleranfällig und weniger portabel. URL :: bis () Das spart viel Zeit beim Codieren und bei der Fehlerbehebung.

Hinweis: Ich werde darüber schreiben Yii Helfer in einer kommenden Folge. Die Verwendung einer allgemein zugänglichen Funktion in meinem Helfer spart mir viel Aufwand und reduziert die Codierung insgesamt.

Abschließend

Die ersten Schritte mit einer MVC können verwirrend sein und Routen und URLs können dabei eine Rolle spielen. Vielleicht hätte ich früher in der Serie über Routen schreiben sollen. Ich hoffe, Sie haben auf jeden Fall Neues über Yii und dessen flexibles Anwendungsdesign mit Routen und URLs erfahren.

Achten Sie auf kommende Tutorials in unserer Programmierserie "Programmieren mit Yii2", während wir weiter in verschiedene Aspekte des Frameworks eintauchen. Lassen Sie mich beispielsweise wissen, ob Sie mehr über das erweiterte Routing erfahren möchten. Ich freue mich über Feature- und Themenanfragen. Sie können sie in den Kommentaren unten posten oder mich auf meiner Lookahead Consulting-Website per E-Mail benachrichtigen.

Wenn Sie jetzt eine fortgeschrittenere Yii2-Anwendung erkunden möchten, lesen Sie unsere Startup-Serie und den Meeting Planner. Die Anwendung ist jetzt in der Alpha-Version, und Sie können damit Besprechungen mit Freunden planen. Sie können den Code auch herunterladen. es ist Open Source.

Wenn Sie wissen möchten, wann das nächste Yii2-Tutorial ankommt, folgen Sie mir @reifman auf Twitter oder besuchen Sie meine Instructor-Seite. Meine Ausbilderseite enthält alle Artikel dieser Serie, sobald sie veröffentlicht sind. 

ähnliche Links

  • Routing- und URL-Erstellung-Yii 2.0-Dokumentation
  • Wie man mit Yii2 programmiert: träge Verhalten (Envato Tuts +)
  • Yii2 Developer Exchange