Heim >Backend-Entwicklung >PHP-Tutorial >Konfiguration der URLManager-Komponente von Yii

Konfiguration der URLManager-Komponente von Yii

不言
不言Original
2018-05-05 09:41:473013Durchsuche

Dieser Artikel stellt hauptsächlich die Konfiguration der URLManager-Komponente von Yii vor, die einen gewissen Referenzwert hat. Jetzt kann ich sie mit allen teilen.

Die Konfigurationskomponenten umfassen hauptsächlich:

  • Geben Sie die Klasse an. Wenn es fehlt, verwenden Sie das Standardklassenattribut

  • . Falls fehlend, verwenden Sie die entsprechenden Attribute der Standardklasse

Konfiguration der URLManager-Komponente von Yii Einfaches Verständnis von Komponenten

urlManager ist eine Klasse. Warum wird sie Komponente genannt? Machen Sie sich vorerst keine Sorgen, wir müssen nur wissen, dass die Klasse für die Komponente angegeben werden muss. Wenn nicht angegeben, wird ein Fehler gemeldet, es sei denn, die Komponente verfügt über eine Standardklasse Welche Komponenten Haben Sie Standardklassen? Es ist die Kernkomponente. Schauen Sie sich den Quellcode als Beispiel an.

Pis: Sofern nicht anders angegeben, bezieht sich der folgende Pfad auf den spezifischen Pfad der Datei, nicht auf den Namespace

  1. Öffnen /frontend/web/index.php und siehe Um
    Konfiguration der URLManager-Komponente von Yii
    zuerst die Merge-Methode der Array-Hilfsklasse zu verwenden, um die Arrays rekursiv zusammenzuführen, und dann die vorherige zu überschreiben, um die endgültige Konfiguration zu erhalten. Übergeben Sie die Konfigurationsdaten an Führen Sie im Konstruktor von dessen Ausführungsmethode aus. Application

  2. springt zur Ausführungsmethode von

    , die viele Ereignisse auslöst. Ich werde mir die Details nicht ansehen. Wo sind die komponentenbezogenen Dinge? Bei der Suche nach verdoryiisoftyiiKonfiguration der URLManager-Komponente von YiiwebApplication.php wurde festgestellt, dass die coreComponents-Methode ausgeführt wurde und ihr Inhalt components
    Konfiguration der URLManager-Komponente von Yii war. Die Standardklasse von urlManager wurde nicht gefunden und jede Konfigurationsdatei gab keine Klasse für urlManager an . Warum wurde kein Fehler gemeldet? Weil es die
    -Methode der übergeordneten Klasse aufruft. coreComponents

  3. Springe zu

    Es stellt sich heraus, dass die URLManager-Komponente hier die Klasse angibt. verdoryiisoftyiiKonfiguration der URLManager-Komponente von YiibaseApplication.php
    Konfiguration der URLManager-Komponente von Yii

    Wir wissen bereits, dass die Klasse der Kernkomponente durch

    angegeben wird, aber wie wird diese Methode aufgerufen? Wenn Sie zurückdenken, was haben Sie sonst noch im Einstiegsskript gemacht? Beim Instanziieren der coreComponents-Klasse wird der Konstruktor automatisch aufgerufen! Wir haben festgestellt, dass Application den Konstruktor der übergeordneten Klasse nicht überschrieben hat. Schauen Sie sich also den Konstruktor der übergeordneten Klasse an Die 省略~webApplication-Methode in dieser Vorinitialisierungsmethode sind die akzeptierten Parameter Referenzen, das heißt, diese Methode muss sich auf

    Konfiguration der URLManager-Komponente von Yii konzentrieren, was wahrscheinlich bedeutet, dass

    Wenn die Konfigurationsdatei eine bestimmte Komponente nicht konfiguriert oder keine Klasse für eine Komponente angibt, verwendet diese Komponente die durch
  4. angegebene Klasse
  5. . Nachdem Sie die Variable

    erstellt haben, übergeben Sie sie an preInit, um den spezifischen Inhalt der Komponente zu starten, und gehen Sie nicht weiter. $configKonfiguration der URLManager-Komponente von Yii

    Schauen wir uns die Konfiguration der Komponentenattribute an. Springe zu . Wir sehen, dass die URLManager-Komponentenkonfiguration auskommentiert ist, was bedeutet, dass sie die Attribute der angegebenen Klasse verwendet der Komponente coreComponents Der Standardwert wird in angegeben. $configComponent::__construct($config)

  6. Zusammenfassend: Komponentenkonfiguration, geben Sie zuerst die Klasse an (wenn es keinen Standard gibt, muss sie in der Konfigurationsdatei angegeben werden), und zweitens das Konfigurationsattribut, das Attribut ist das Mitgliedsvariable der Klasse

    /项目目录/frontend/config/main.phpurlManagervendoryiisoftyiiKonfiguration der URLManager-Komponente von YiiwbeUrlManager.php
    Konfiguration der URLManager-Komponente von Yii Fügen Sie einen virtuellen Host hinzuKonfiguration der URLManager-Komponente von Yii

    Fügen Sie der Einfachheit halber zuerst einen virtuellen Host zum Front-End-Projekt hinzu, siehe Link für Details
    <VirtualHost *:Konfiguration der URLManager-Komponente von Yii0>DocumentRoot "${INSTALL_DIR}/www/advanced/frontend/web/"ServerName frontend.advanced.com</VirtualHost>

    Dieser Schritt ist nicht notwendig ~
3 Jede Konfigurationsfunktion

führt die

Aktion aus, bei der der

Controller als angefordert wird ein Beispiel

:

SitePis: Setzen Sie dies auf false, die folgenden Einstellungen funktionieren nicht about

  1. enablePrettyUrlfalse [Standard]: Durch Eingabeskript? r=[module/]Controller-/Aktionsmoduszugriff. Das heißt,

    true: Aktivieren Sie das Verschönerungsrouting (beachten Sie, dass dies nur auf „true“ konfiguriert ist und andere nicht konfiguriert werden sollen, d. h. die Standardeinstellung wird verwendet). Eintragsskript/[Modul/] Controller /Aktionsmoduszugriff. Das heißt,
  • http://localhost/advanced/frontend/web/index.php?r=site/about

  • : Erst nachdem
  • abgeschlossen ist, können Sie über http://localhost/advanced/frontend/web/index.php/site/about auf

    zugreifen
    • true [默认]: 不隐藏入口脚本,即要加入口脚本文件名index.php才能访问到,http://localhost/advanced/frontend/web/index.php/site/about

    • false:按理解,设为false,应该是http://localhost/advanced/frontend/web/site/about即可访问,但发现是apache提示找不到页面
      Konfiguration der URLManager-Komponente von Yii这意味着,apache服务器找不到url请求的文件,按apache理解,省略~/web/下没有site目录,所以,想要实现隐藏入口脚本,还要在/frontend/web/下添加.htaccess文件,官方文档介绍,具体步骤如下:

      RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . index.php
  1. .htaccess添加内容如下,意思是,如果请求的文件或目录找不到,就转到index.php

  • enableStrictParsing

    • false [默认]:不启用严格解析路由,意思是,如果请求url与所有rules规则都不匹配的话,就按照默认的路由处理方式来处理,即按[模块/]控制器/动作,方式去解析url。

    • true:设为true后,当请求url与rules规则不匹配,就报错。

      如,通过http://frontend.advanced.com/site/about请求,得到Yii框架的报错提示
      Konfiguration der URLManager-Komponente von Yii

      这意味着,请求经过apache的转发,已经找到目的文件(入口脚本),目的文件运行过程中,没有得到期望参数(没传或验证不通过),因此Yii框架抛异常了

      注意与上面apache提示找不到页面区分~

  • suffix: 后缀名,如设置为suffix => '.html,需通过http://frontend.advanced.com/site/about.html才能访问到

  • rules: 规则的配置就很复杂了,下面详讲。

  • 4 rules配置

    1. 想访问Siteabout动作,要在rules里加

      &#39;site/about&#39; => &#39;site/about&#39;

      其中,左边称为pattern,对应输入的url,右边为route,对应[模型/]控制器/动作。

    2. 如果不想为每个动作都加一个规则,可以这样

      &#39;<controller:\w+>/<action:\w+>&#39; => &#39;<controller>/<action>&#39;,

      可以这样理解,左边,接收请求url的对应值,对它们作\w验证,即必须是字母或数字或下划线,以/site/about为例,验证通过,赋值给临时变量controller,action,右边使用,从而找到Site控制器的about动作。

    3. 同理,模块下的控制器动作也可以这样实现

      &#39;<module:\w+>/<controller:\w+>/<action:\w+>&#39; => &#39;<module>/<controller>/<action>&#39;,
    4. restful的路由规则,在研究,日后再补~

    Konfiguration der URLManager-Komponente von Yii Notice

    • suffix 设了.html, 下面的rules都会用到,要想不用,需要在规则数组单独声明suffix=> ''

    • restful路由配置,pluralize参数默认为true,假如控制器为UserController,要通过users的url才能访问到,设为false的话,就不用加s,通过user即可访问,如果控制器本来就是UsersController,不管pluralize如何配置,都是通过users访问

    相关推荐:

    yii的CURD操作

    Das obige ist der detaillierte Inhalt vonKonfiguration der URLManager-Komponente von Yii. 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