Maison >développement back-end >tutoriel php >Configuration du composant urlManager de Yii

Configuration du composant urlManager de Yii

不言
不言original
2018-05-05 09:41:473009parcourir

Cet article présente principalement la configuration du composant urlManager de Yii, qui a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer.

Les composants de configuration incluent principalement : <.>

  • Précisez la classe. S'il est manquant, utilisez l'attribut class par défaut

  • . S'il manque, utilisez les attributs correspondants de la classe par défaut

Configuration du composant urlManager de Yii Compréhension simple des composants

urlManager est une classe, pourquoi s'appelle-t-on un composant ? Ne vous inquiétez pas pour l'instant, nous avons juste besoin de savoir que

doit spécifier la classe pour le composant. S'il n'est pas spécifié, une erreur sera signalée, sauf si le composant a une classe par défaut. avez-vous des classes par défaut ? C'est le composant principal. Installez B et regardez le code source. Prenons l'exemple du modèle avancé yii.

Pis : Sauf indication contraire, le chemin ci-dessous fait référence au chemin spécifique du fichier, et non à l'espace de noms

  1. Ouvrir

    et voir Pour /frontend/web/index.php
    Configuration du composant urlManager de Yii utilisez d'abord la méthode de fusion de la
    classe d'assistance de tableau pour fusionner les tableaux de manière récursive, puis écrasez le précédent pour obtenir la configuration finale. transmettez les données de configuration à Dans le constructeur de , exécutez sa méthode run. Application

  2. passe à la méthode d'exécution de
  3. , ce qui déclenche de nombreux événements. Je ne regarderai pas les détails, cela ne semble pas pertinent ~, où sont les éléments liés aux composants ? En recherchant

    , il a été constaté que la méthode coreComponents était exécutée et que son contenu était verdoryiisoftyiiConfiguration du composant urlManager de YiiwebApplication.phpcomponents
    La classe par défaut d'urlManager n'a pas été trouvée et chaque fichier de configuration ne spécifiait pas de classe pour urlManager. . Pourquoi aucune erreur n’a-t-elle été signalée ? Parce qu'il appelle la méthode Configuration du composant urlManager de Yii de la classe parent.
    coreComponents

  4. passe à
  5. Il s'avère que le composant urlManager spécifie une classe ici.

    verdoryiisoftyiiConfiguration du composant urlManager de YiibaseApplication.php
    Configuration du composant urlManager de YiiNous savons déjà que la classe du composant principal est spécifiée via

    , mais comment appelle-t-il cette méthode ? En y repensant, qu'avez-vous fait d'autre dans le script d'entrée ? Lors de l'instanciation de la classe

    , le constructeur est automatiquement appelé ! Nous avons constaté que coreComponents n'a pas remplacé le constructeur de la classe parent, c'est-à-dire regardez le constructeur de la classe parent Application省略~webApplication

    Configuration du composant urlManager de Yii

  6. passez à la méthode
  7. , dans Dans cette méthode de pré-initialisation, les paramètres acceptés sont des références, c'est-à-dire que cette méthode doit transformer le tableau

    Focus sur preInit$configConfiguration du composant urlManager de Yii ce qui signifie probablement, <.>Si le fichier de configuration ne configure pas un certain composant ou ne spécifie pas de classe pour un composant, ce composant utilise la classe

    spécifiée par

    . Après avoir construit la variable , transmettez-la à coreComponents pour démarrer le contenu spécifique du composant et ne pas aller plus loin. $configComponent::__construct($config)

    Regardons la configuration des attributs du composant. Passons à
  8. Nous voyons que la configuration du composant urlManager est commentée, ce qui signifie qu'elle utilise les attributs de la classe spécifiée. du composant
  9. . La valeur par défaut est spécifiée dans

    . /项目目录/frontend/config/main.phpurlManagervendoryiisoftyiiConfiguration du composant urlManager de YiiwbeUrlManager.php
    Configuration du composant urlManager de YiiPour résumer : configuration du composant, précisez d'abord la classe (s'il n'y a pas de défaut, il faut l'indiquer dans le fichier de configuration), deuxième attribut de configuration, l'attribut est le variable membre de la classe

    Configuration du composant urlManager de Yii Ajouter un hôte virtuel
Pour plus de commodité, ajoutez d'abord un hôte virtuel au projet front-end, voir le lien pour détails

Cette étape n'est pas obligatoire~
<VirtualHost *:Configuration du composant urlManager de Yii0>DocumentRoot "${INSTALL_DIR}/www/advanced/frontend/web/"ServerName frontend.advanced.com</VirtualHost>

3 Chaque fonction de configuration

effectue l'action

de demander le

contrôleur à titre d'exemple

Siteabout

     :
  1. enablePrettyUrlPis : définissez ceci sur false, les paramètres suivants ne fonctionneront pas

  2. false [Par défaut] : Passer l'entrée Script?r=[module/]accès au mode contrôleur/action. Autrement dit,
  • http://localhost/advanced/frontend/web/index.php?r=site/about

    true : activez le routage d'embellissement (notez que configurez-le uniquement sur true et n'en configurez pas d'autres, c'est-à-dire utilisez la valeur par défaut), via le script d'entrée/[module/] contrôleur/accès au mode Action. Autrement dit,
  • http://localhost/advanced/frontend/web/index.php/site/about

 : Ce n'est qu'une fois
  • terminé que vous pourrez accéder à showScriptName via

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

    • false:按理解,设为false,应该是http://localhost/advanced/frontend/web/site/about即可访问,但发现是apache提示找不到页面
      Configuration du composant urlManager de 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框架的报错提示
      Configuration du composant urlManager de 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的路由规则,在研究,日后再补~

    Configuration du composant urlManager de Yii Notice

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

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

    相关推荐:

    yii的CURD操作

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn