Heim > Artikel > Backend-Entwicklung > PHP-Entwicklungsframework Yii Framework-Tutorial (5) URL-Verwaltung
Im vorherigen Beispiel für ein kurzes Tutorial zur Yii-Framework-Entwicklung (4) Hangman-Wortratespiel wurden mehrere Probleme weggelassen. Eines ist der URLManager der Konfigurationsdatei main.php, das andere ist die Basisklasse CComponent des Controllers und die Drittens handelt es sich um die von View verwendete Definition der CHtml-Hilfsklasse. Dieser Artikel beginnt mit einer Einführung in URLManager, URL-Verwaltung.
return array( ... 'components'=>array( 'urlManager'=>array( 'urlFormat'=>'path', 'rules'=>array( 'game/guess/'=>'game/guess', ), ), ), );
Die vollständige URL-Verwaltung von Webanwendungen umfasst zwei Aspekte. Wenn ein Benutzer eine bestimmte URL anfordert, muss die Anwendung diese zunächst in verständliche Parameter zerlegen. Zweitens muss die Anwendung eine Möglichkeit zum Erstellen von URLs bereitstellen, damit die erstellten URLs von der Anwendung verstanden werden können. Bei Yii-Anwendungen erfolgt dies mit Hilfe von CUrlManager.
Bei der Verwendung einer URL im Pfadformat können wir bestimmte URL-Regeln festlegen, um unsere URL benutzerfreundlicher zu gestalten. Beispielsweise können wir eine kurze URL /post/100 anstelle der langen URL /index.php/post/read/id/100 generieren. Die URL-Erstellung und -Analyse erfolgt durch Angabe von URL-Regeln über CUrlManager.
Um URL-Regeln anzugeben, müssen wir das Rules-Attribut des URLManager-Anwendungselements festlegen:
array( ...... 'components'=>array( ...... 'urlManager'=>array( 'urlFormat'=>'path', 'rules'=>array( 'pattern1'=>'route1', 'pattern2'=>'route2', 'pattern3'=>'route3', ), ), ), );
Diese Regeln werden als eine Reihe von Arrays von Routenformatpaaren angegeben, wobei jedes Paar entspricht eine einzige Regeln. Das Format der Route muss ein gültiger regulärer Ausdruck ohne Trennzeichen oder Modifikatoren sein. Dabei handelt es sich um den Teil der Pfadinformationen, der zum Abgleichen von URLs verwendet wird. Außerdem sollte die Route auf einen gültigen Routencontroller verweisen.
Regeln können eine kleine Anzahl von GET-Parametern binden. Das allgemeine Format der Parameter ist wie folgt:
ParamName stellt den GET-Parameternamen dar, und das optionale ParamPattern stellt den regulären Ausdruck dar, der zum Abgleichen des GET-Parameterwerts verwendet wird. Beim Generieren einer Webadresse (URL) werden diese Parameter-Tokens durch die entsprechenden Parameterwerte ersetzt; beim Parsen einer URL werden die entsprechenden GET-Parameter durch das Parsen der Ergebnisse generiert.
Wir erklären anhand einiger Beispiele, wie URLs funktionieren. Nehmen wir an, dass unsere Regeln die folgenden drei umfassen:
array( 'posts'=>'post/list', 'post/'=>'post/read', 'post//
Zusammenfassend lässt sich sagen, dass bei der Verwendung von createUrl zum Generieren einer URL die an die Methode übergebenen Routen- und GET-Parameter verwendet werden, um zu bestimmen, welche URL-Regeln gelten. Wenn jeder Parameter in der Zuordnungsregel im GET-Parameter gefunden werden kann, wird er an createUrl übergeben. Wenn die Routenregel auch mit dem Routenparameter übereinstimmt, wird die Regel zum Generieren der URL verwendet.
Wenn der an createUrl übergebene GET-Parameter eine der oben erforderlichen Regeln ist, werden die anderen Parameter in der Abfragezeichenfolge angezeigt. Wenn wir beispielsweise $this- >createUrl('post/read',array('id'=>100,'year'=>2008)) aufrufen, erhalten wir /index.php/post/100 ? Jahr=2008. Damit diese zusätzlichen Parameter als Teil der Pfadinformationen erscheinen, sollten wir /* an die Regel anhängen. Mit der Regel post//* können wir also die URL /index.php/post/100/year/2008 erhalten.
Wie bereits erwähnt, dienen URL-Regeln auch dazu, Anforderungs-URLs zu analysieren. Dies ist natürlich ein umgekehrter Prozess der URL-Generierung. Wenn der Benutzer beispielsweise /index.php/post/100 anfordert, wird die zweite Regel aus dem obigen Beispiel angewendet, um die Route post/read und den GET-Parameter array('id'=>100) (verfügbar über $ _ERHALTEN).
Die Methode createurl generiert eine relative Adresse. Um eine absolute URL zu erhalten, können wir ihr yii"> voranstellen
Hinweis: Die Verwendung von URL-Regeln verringert die Leistung der Anwendung. Dies liegt daran, dass [CUrlManager] beim Parsen der angeforderten URL versucht, dies zu tun Verwenden Sie jede Regel, um sie abzugleichen, bis eine bestimmte Regel angewendet werden kann. Daher sollten Website-Anwendungen mit hohem Datenverkehr die von ihnen verwendeten URL-Regeln minimieren in Hangman.game/guess‘,
Das heißt, alle ähnlichen /game/guess/xx werden game/guess zugeordnet, der actionGuess-Methode von GameController, und der GET-Parameter wird als g= übergeben 'x'. Der Link der Buchstaben ist /game/guess/?g=x oder /game/guess/x GameController gemäß den in main.php definierten Matching-Regeln. Übergeben Sie den GET-Parameter. Auf diese Weise kann über $_GET['g'] in actionGuess zugegriffen werden >
Das Obige ist der Inhalt des PHP-Entwicklungsframeworks Yii Framework (5). Weitere verwandte Inhalte finden Sie auf der PHP-Website (www.php.cn).