yii的urlManager元件配置
這篇文章主要介紹了關於yii的urlManager元件配置,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
配置元件主要包括:
指定類別。缺少的話使用預設類別
屬性。缺少的話使用預設類別的對應屬性
yii的urlManager元件配置 元件簡單理解
urlManager是一個類,為什麼又稱它為元件呢?先不用管,我們只需知道,要為組件指定類即可,如果沒有指定會報錯,除非該組件有預設類,哪些組件有預設類呢?就是核心元件,裝個B看下原始碼,以yii高階模板為例。
Pis:如無特別說明,下面的路徑指的是檔案具體路徑,不是命名空間
開啟
/frontend /web/index.php
,看到
首先,用數組助手類別的merge方法遞歸合併數組,後覆蓋前得出最終配置,然後,將配置資料傳到Application
的建構方法裡,再執行其run方法。跳到
verdor\yiisoft\yiiyii的urlManager元件配置\web\Application.php
的run方法,它觸發了許多事件,具體就不看了,貌似無關~,components相關東西在哪裡?搜尋components
,發現執行了coreComponents方法,其內容是
並沒有發現urlManager的預設類,並且各個設定檔都沒為urlManager指定class,為什麼沒報錯?因為它呼叫了父類別的coreComponents
方法。-
跳到
verdor\yiisoft\yiiyii的urlManager元件配置\base\Application.php
,原來urlManager元件在這裡指定了類別。我們已經知道是透過
coreComponents
指定核心元件的類別了,但它是如何呼叫這個方法的呢?回頭想想,入口腳本還做了什麼?實例化Application
類別時,自動呼叫建構方法!我們發現省略~\web\Application
沒有覆寫父類別的建構方法,也就是看父類別的建構方法 - ##跳到
preInit
大概意思是,方法,在這個預初始化方法裡,接受的參數是引用,也就是這個方法要對
$config陣列改造,重點看
如果設定檔沒有配置某個元件或沒有為某元件指定類,這個元件就用coreComponents
指定的類別
。將$config變數建構好後,傳到
Component::__construct($config),開始元件的具體內容,就不往下走了。
- 下面看元件屬性的配置,跳到
/專案目錄/frontend/config/main.php
,我們看到urlManager元件配置被註解掉了,即表示其使用了
urlManager元件指定類別的屬性的預設值,具體在
\vendor\yiisoft\yiiyii的urlManager元件配置\wbe\UrlManager.php。
小結一下:元件配置,一指定類別(無預設就要在設定檔寫明),二配置屬性,屬性就是類別的成員變數
<VirtualHost *:yii的urlManager元件配置0>DocumentRoot "${INSTALL_DIR}/www/advanced/frontend/web/"ServerName frontend.advanced.com</VirtualHost>
這一步不是必須的~3 各組態作用以請求
Site#控制器的
about動作為範例
#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
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提示找不到页面,这意味着,apache服务器找不到url请求的文件,按apache理解,
省略~/web/
下没有site
目录,所以,想要实现隐藏入口脚本,还要在/frontend/web/
下添加.htaccess
文件,官方文档介绍,具体步骤如下:RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . index.php
登入後複製在
.htaccess
添加内容如下,意思是,如果请求的文件或目录找不到,就转到index.phpenableStrictParsing
:false [默认]:不启用严格解析路由,意思是,如果请求url与所有
rules
规则都不匹配的话,就按照默认的路由处理方式来处理,即按[模块/]控制器/动作,方式去解析url。true:设为true后,当请求url与
rules
规则不匹配,就报错。如,通过
http://frontend.advanced.com/site/about
请求,得到Yii框架的报错提示这意味着,请求经过apache的转发,已经找到目的文件(入口脚本),目的文件运行过程中,没有得到期望参数(没传或验证不通过),因此Yii框架抛异常了。
注意与上面apache提示找不到页面区分~
suffix
: 后缀名,如设置为suffix => '.html
,需通过http://frontend.advanced.com/site/about.html
才能访问到rules
: 规则的配置就很复杂了,下面详讲。
4 rules
配置
想访问
Site
的about
动作,要在rules里加'site/about' => 'site/about'
登入後複製其中,左边称为
pattern
,对应输入的url,右边为route
,对应[模型/]控制器/动作。如果不想为每个动作都加一个规则,可以这样
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
登入後複製可以这样理解,左边,接收请求url的对应值,对它们作
\w
验证,即必须是字母或数字或下划线,以/site/about
为例,验证通过,赋值给临时变量controller
,action
,右边使用,从而找到Site
控制器的about
动作。同理,模块下的控制器动作也可以这样实现
'<module:\w+>/<controller:\w+>/<action:\w+>' => '<module>/<controller>/<action>',
登入後複製restful的路由规则,在研究,日后再补~
suffix
设了.html
, 下面的rules都会用到,要想不用,需要在规则数组单独声明suffix=> ''
restful路由配置,
pluralize
参数默认为true,假如控制器为UserController
,要通过users
的url才能访问到,设为false的话,就不用加s,通过user
即可访问,如果控制器本来就是UsersController
,不管pluralize
如何配置,都是通过users
访问
yii的urlManager元件配置 Notice
相关推荐:
以上是yii的urlManager元件配置的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

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

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

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

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

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

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

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

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