Heim  >  Artikel  >  PHP-Framework  >  So definieren Sie Routing im YII-Framework

So definieren Sie Routing im YII-Framework

(*-*)浩
(*-*)浩Original
2019-12-11 11:47:483893Durchsuche

So definieren Sie Routing im YII-Framework

Routing und URL-Generierung

Wenn eine YII-Anwendung mit der Verarbeitung einer Anfrage beginnt, ist das Erste, was sie tut besteht darin, die angeforderte URL in eine Route umzuwandeln. Die Aufgabe des Routings besteht darin, entsprechende Controller und Operationen anschließend zu instanziieren, um Anfragen zu verarbeiten. Der gesamte Verarbeitungsprozess wird als Routing bezeichnet. (Empfohlenes Lernen: YII-Framework )

Der umgekehrte Prozess der Route wird als URL-Generierung bezeichnet. Dies bezieht sich auf die Generierung einer URL mit einer bestimmten Route und Parameterinformationen. Wenn die generierte URL zum Senden einer Anfrage verwendet wird, kann der Routing-Verarbeitungsprozess sie erneut analysieren und die ursprünglichen Routing- und Parameterinformationen wiederherstellen.

Der URL-Manager ist hauptsächlich für das Routing und die URL-Generierung verantwortlich, die als Anwendungskomponente registriert ist. Der URL-Manager stellt die Methode parseRequest() zur Verfügung, um die Anfrage zu analysieren und die Routing- und Parameterinformationen auszuwerten.

Die Methode createUrl() wird verwendet, um aus den angegebenen Routen- und Parameterinformationen eine URL zu generieren. Durch die Konfiguration des URL-Managers in der Anwendungskonfiguration können Sie Ihrer Anwendung ermöglichen, jedes URL-Format zu erkennen, ohne den vorhandenen Programmcode zu ändern. Sie können beispielsweise den folgenden Code verwenden, um eine URL zu generieren.

use yii\helpers\Url;
// Url::to() calls UrlManager::createUrl() to create a URL
$url = Url::to(['post/view', 'id' => 100]);

Abhängig von der Konfiguration des URL-Managers sieht die durch den obigen Code generierte URL wie folgt aus. Wenn diese URL anschließend angefordert wird, wird sie in die oben genannten ursprünglichen Routen- und Parameterinformationen geparst.

/index.php?r=post/view&id=100
/index.php/post/100
/posts/100

URL-Format

URL-Manager unterstützt zwei URL-Formate: Standard-URL-Format und hübsches URL-Format. Das Standard-URL-Format verwendet einen Abfrageparameter r, um die Route zu übergeben, und andere Parameter werden auf normale Weise in die URL eingefügt.

Zum Beispiel hat die URL /index.php?r=post/view&id=100 eine Route von Post/View und eine Parameter-ID von 100. Das Standard-URL-Format erfordert keine Konfiguration des URL-Managers.

Das schöne URL-Format verwendet einen zusätzlichen Pfad nach dem Namen des Eingabeskripts, um die Route und zugehörige Parameter anzuzeigen.

Zum Beispiel ist der zusätzliche Pfad der URL /index.php/post/100 /post/100, die angezeigte Route ist post/view und die Parameter-ID ist 100.

Wenn Sie dieses URL-Format verwenden möchten, müssen Sie einen URL-Regelsatz entwerfen, der auf den tatsächlichen Anforderungen basiert. Sie können zwischen diesen beiden URL-Formaten wechseln, indem Sie den Wert des Attributs „enablePrettyUrl“ im URL-Manager ändern.

Routing

Die Arbeit des Routings kann in zwei Schritte unterteilt werden:

1. Eine Route und zugehörige Parameter analysieren ;

2. Die Controller-Operation, die eine Antwort basierend auf der Route generiert, wird zur Verarbeitung der Anfrage verwendet.

Bei Verwendung des Standard-URL-Formats ist das Parsen der Route sehr einfach. Rufen Sie einfach den Wert des Parameters r ab.

Bei Verwendung des hübschen URL-Formats erkennt der URL-Manager die URL Es werden Regeln festgelegt, um die Route zu finden, die der Anfrage entspricht. Wenn keine passende Regel gefunden wird, wird eine Ausnahme yiiwebNotFoundHttpException ausgelöst.

Sobald die Route aus der Anfrage analysiert wurde, müssen Sie als Nächstes die Controller-Aktion erstellen, die dieser Route zugeordnet ist. Routen werden in mehrere Teile zerschnitten, zum Beispiel wird „site/index“ in „site“ und „index“ aufgeteilt.

Jeder Teil ist eine ID, sie können auf ein Modul, einen Controller oder eine Operation verweisen. Ab dem ersten Teil der Route sollten die folgenden Schritte ausgeführt werden, um das Modul (sofern vorhanden), den Controller und die Aktion zu erstellen:

1. Stellen Sie den Anwendungskörper auf das aktuelle Modul ein.

2. Überprüfen Sie, ob die yiibaseModule::controllerMap des aktuellen Moduls die aktuelle ID enthält. Wenn dies der Fall ist, wird basierend auf der Konfiguration in der Tabelle ein Controller-Objekt erstellt und dann mit Schritt fünf fortgefahren, um nachfolgende Fragmente der Route auszuführen.

3. Überprüfen Sie, ob die ID auf ein Modul in der Modulliste im Attribut yiibaseModule::modules des aktuellen Moduls verweist. Wenn dies der Fall ist, wird ein Modulobjekt basierend auf der Konfiguration in der Modultabelle erstellt und dann wird das neu erstellte Modul als Umgebung verwendet, um zu Schritt zwei zurückzukehren und die nächste Route zu analysieren.

4. Behandeln Sie diese ID als Controller-ID und erstellen Sie ein Controller-Objekt. Verwenden Sie den nächsten Schritt, um die verbleibenden Fragmente in der Route zu analysieren.

5. Der Controller sucht in seinem yiibaseController::actions() nach der aktuellen ID. Wenn es gefunden wird, erstellt es ein Aktionsobjekt basierend auf der Konfiguration in der Zuordnungstabelle. Andernfalls versucht der Controller, eine Inline-Aktion zu erstellen, die der ID entspricht und durch eine Aktionsmethode definiert wird.

Wenn in den obigen Schritten Fehler auftreten, löst die Anwendung die Ausnahme yiiwebNotFoundHttpException aus, was bedeutet, dass die Routing-Verarbeitung fehlgeschlagen ist.

Das obige ist der detaillierte Inhalt vonSo definieren Sie Routing im YII-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn