目錄
yii的urlManager元件配置 元件簡單理解
4 rules配置
yii的urlManager元件配置 Notice
首頁 後端開發 php教程 yii的urlManager元件配置

yii的urlManager元件配置

May 05, 2018 am 09:41 AM
組件 配置

這篇文章主要介紹了關於yii的urlManager元件配置,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

配置元件主要包括:

  • 指定類別。缺少的話使用預設類別

  • 屬性。缺少的話使用預設類別的對應屬性

yii的urlManager元件配置 元件簡單理解

urlManager是一個類,為什麼又稱它為元件呢?先不用管,我們只需知道,要為組件指定類即可,如果沒有指定會報錯,除非該組件有預設類,哪些組件有預設類呢?就是核心元件,裝個B看下原始碼,以yii高階模板為例。

Pis:如無特別說明,下面的路徑指的是檔案具體路徑,不是命名空間

  1. 開啟/frontend /web/index.php,看到
    yii的urlManager元件配置
    首先,用數組助手類別的merge方法遞歸合併數組,後覆蓋前得出最終配置,然後,將配置資料傳到Application的建構方法裡,再執行其run方法。

  2. 跳到verdor\yiisoft\yiiyii的urlManager元件配置\web\Application.php的run方法,它觸發了許多事件,具體就不看了,貌似無關~,components相關東西在哪裡?搜尋components,發現執行了coreComponents方法,其內容是
    yii的urlManager元件配置
    並沒有發現urlManager的預設類,並且各個設定檔都沒為urlManager指定class,為什麼沒報錯?因為它呼叫了父類別的coreComponents方法。

  3. 跳到verdor\yiisoft\yiiyii的urlManager元件配置\base\Application.php,原來urlManager元件在這裡指定了類別。
    yii的urlManager元件配置

    我們已經知道是透過coreComponents指定核心元件的類別了,但它是如何呼叫這個方法的呢?回頭想想,入口腳本還做了什麼?實例化Application類別時,自動呼叫建構方法!我們發現省略~\web\Application沒有覆寫父類別的建構方法,也就是看父類別的建構方法

    yii的urlManager元件配置

  4. ##跳到

    preInit方法,在這個預初始化方法裡,接受的參數是引用,也就是這個方法要對$config陣列改造,重點看yii的urlManager元件配置

    大概意思是,

    如果設定檔沒有配置某個元件或沒有為某元件指定類,這個元件就用coreComponents指定的類別。將$config變數建構好後,傳到Component::__construct($config),開始元件的具體內容,就不往下走了。

  5. 下面看元件屬性的配置,跳到

    /專案目錄/frontend/config/main.php,我們看到urlManager元件配置被註解掉了,即表示其使用了urlManager元件指定類別的屬性的預設值,具體在\vendor\yiisoft\yiiyii的urlManager元件配置\wbe\UrlManager.php
    yii的urlManager元件配置

    小結一下:元件配置,一指定類別(無預設就要在設定檔寫明),二配置屬性,屬性就是類別的成員變數

yii的urlManager元件配置  新增虛擬主機

為了方便,先為前台專案新增虛擬主機,請看連結

<VirtualHost *:yii的urlManager元件配置0>DocumentRoot "${INSTALL_DIR}/www/advanced/frontend/web/"ServerName frontend.advanced.com</VirtualHost>
登入後複製

這一步不是必須的~

3 各組態作用

以請求

Site#控制器的about動作為範例

  1. #enablePrettyUrl

    Pis:這個設為false,下面的設定都不行

    • false [預設]:透過入口腳本?r=[模組/]控制器/動作方式存取。即

      http://localhost/advanced/frontend/web/index.php?r=site/about

    • true:開啟美化路由,(注意僅配置這個為ture,其他不配置,即用預設),透過入口腳本/[模組/]控制器/動作方式存取。即

      http://localhost/advanced/frontend/web/index.php/site/about

  2. showScriptName

    完成後,才能透過

    http://frontend.advanced.com/site/about造訪

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

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

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

  3. enableStrictParsing

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

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

      如,通过http://frontend.advanced.com/site/about请求,得到Yii框架的报错提示
      yii的urlManager元件配置

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

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

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

  5. 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的路由规则,在研究,日后再补~

  5. yii的urlManager元件配置 Notice

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

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

    相关推荐:

    yii的CURD操作

    以上是yii的urlManager元件配置的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1655
14
CakePHP 教程
1414
52
Laravel 教程
1307
25
PHP教程
1254
29
C# 教程
1228
24
在PyCharm中如何設定Git配置 在PyCharm中如何設定Git配置 Feb 20, 2024 am 09:47 AM

標題:如何在PyCharm中正確配置Git在現代軟體開發中,版本控制系統是非常重要的工具,而Git作為其中一種流行的版本控制系統,為開發者提供了強大的功能和靈活的操作。而PyCharm作為一款功能強大的Python整合開發環境,自備了對Git的支持,能夠讓開發者更方便地管理程式碼版本。本文將介紹如何在PyCharm中正確地配置Git,以便於在開發過程中更好地

Linux系統中GDM的工作原理及配置方法 Linux系統中GDM的工作原理及配置方法 Mar 01, 2024 pm 06:36 PM

標題:Linux系統中GDM的工作原理及設定方法在Linux作業系統中,GDM(GNOMEDisplayManager)是一種常見的顯示管理器,用於控制圖形使用者介面(GUI)登入和使用者會話管理。本文將介紹GDM的工作原理和設定方法,以及提供具體的程式碼範例。一、GDM的工作原理GDM是GNOME桌面環境下的顯示管理器,負責啟動X伺服器並提供登入介面,使用者輸

PyCharm與PyTorch完美結合:安裝設定步驟詳解 PyCharm與PyTorch完美結合:安裝設定步驟詳解 Feb 21, 2024 pm 12:00 PM

PyCharm是一款強大的整合開發環境(IDE),而PyTorch則是深度學習領域備受歡迎的開源架構。在機器學習和深度學習領域,使用PyCharm和PyTorch進行開發可以大大提高開發效率和程式碼品質。本文將詳細介紹如何在PyCharm中安裝設定PyTorch,並附上具體的程式碼範例,幫助讀者更好地利用這兩者的強大功能。第一步:安裝PyCharm和Python

了解Linux Bashrc:功能、設定與使用方法 了解Linux Bashrc:功能、設定與使用方法 Mar 20, 2024 pm 03:30 PM

了解LinuxBashrc:功能、配置與使用方法在Linux系統中,Bashrc(BourneAgainShellrunco​​mmands)是一個非常重要的配置文件,其中包含了系統啟動時自動運行的各種命令和設定。 Bashrc文件通常位於使用者的家目錄下,是一個隱藏文件,它的作用是為使用者自訂設定Bashshell的環境。一、Bashrc的功能設定環境

win11系統如何配置工作小組 win11系統如何配置工作小組 Feb 22, 2024 pm 09:50 PM

Win11系統如何設定工作群組工作群組是一種在區域網路中連接多台電腦的方式,它允許電腦之間共用檔案、印表機和其他資源。在Win11系統中,設定工作群組非常簡單,只需依照下列步驟操作即可。步驟1:開啟「設定」應用程式首先,點擊Win11系統的「開始」按鈕,然後在彈出的選單中選擇「設定」應用程式。你也可以使用快捷鍵“Win+I”開啟“設定”。步驟2:選擇「系統」在「設定」應用程式中,你會看到多個選項。請點選「系統」選項,進入系統設定頁面。步驟3:選擇「關於」在「系統」設定頁面中,你會看到多個子選項。請點

簡單易懂的PyCharm設定Git教學 簡單易懂的PyCharm設定Git教學 Feb 20, 2024 am 08:28 AM

PyCharm是常用的整合開發環境(IDE),在日常開發中,使用Git管理程式碼是不可或缺的。本文將介紹如何在PyCharm中設定Git,並使用Git進行程式碼管理,並附帶具體程式碼範例。第一步:安裝Git首先,確保在你的電腦上已經安裝了Git。如果沒有安裝,可以前往[Git官網](https://git-scm.com/)下載並安裝最新版本的Git

Linux系統中如何設定和安裝FTPS Linux系統中如何設定和安裝FTPS Mar 20, 2024 pm 02:03 PM

標題:Linux系統中如何配置和安裝FTPS,需要具體程式碼範例在Linux系統中,FTPS是一種安全的檔案傳輸協議,與FTP相比,FTPS透過TLS/SSL協議對傳輸的資料進行加密,提高了資料傳輸的安全性。在本文中,將介紹如何在Linux系統中設定和安裝FTPS,並提供特定的程式碼範例。步驟一:安裝vsftpd開啟終端,輸入以下指令安裝vsftpd:sudo

CentOS7系統安裝與設定 DRBD?實現高可用性和資料冗餘教程! CentOS7系統安裝與設定 DRBD?實現高可用性和資料冗餘教程! Feb 22, 2024 pm 02:13 PM

DRBD(DistributedReplicatedBlockDevice)是一種用於實現資料冗餘和高可用性的開源解決方案。以下是在CentOS7系統上安裝和設定DRBD的教學:安裝DRBD:開啟終端機並以管理員身分登入CentOS7系統。執行以下命令以安裝DRBD軟體包:sudoyuminstalldrbd配置DRBD:編輯DRBD設定檔(通常位於/etc/drbd.d目錄下),配置DRBD資源的設定。例如,可以定義主節點和備份節點的IP位址、連接埠和設備等。確保主節點和備份節點之間可以透過網

See all articles