U方法

URL生成

爲了配合所使用的URL模式,咱們須要可以動態的根據當前的URL設置生成對應的URL地址,爲
此,ThinkPHP內置提供了U方法,用於URL的動態生成,能夠確保項目在移植過程當中不受環境的影響。php

定義規則

U方法的定義規則以下(方括號內參數根據實際應用決定):
U('地址表達式',['參數'],['僞靜態後綴'],['顯示域名'])
地址表達式
地址表達式的格式定義以下:
[模塊/控制器/操做#錨點@域名]?參數1=值1&參數2=值2...
若是不定義模塊的話 就表示當前模塊名稱,下面是一些簡單的例子:
U('User/add') // 生成User控制器的add操做的URL地址
U('Blog/read?id=1') // 生成Blog控制器的read操做 而且id爲1的URL地址
U('Admin/User/select') // 生成Admin模塊的User控制器的select操做的URL地址
參數
U方法的第二個參數支持數組和字符串兩種定義方式,若是隻是字符串方式的參數能夠在第一個參數中定
義,例如:html

U('Blog/cate',array('cate_id'=>1,'status'=>1))
U('Blog/cate','cate_id=1&status=1')
U('Blog/cate?cate_id=1&status=1')
三種方式是等效的,都是生成Blog控制器的cate操做 而且 cate_id 爲1 status 爲1的URL地址。
可是不容許使用下面的定義方式來傳參數
U('Blog/cate/cate_id/1/status/1');
僞靜態後綴
U函數會自動識別當前配置的僞靜態後綴,若是你須要指定後綴生成URL地址的話,能夠顯式傳入,例如:thinkphp

U('Blog/cate','cate_id=1&status=1','xml');數組

自動識別

根據項目的不一樣URL設置,一樣的U方法調用能夠智能地對應產生不一樣的URL地址效果,例如針對:
U('Blog/read?id=1');
這個定義爲例。
若是當前URL設置爲普通模式的話,最後生成的URL地址是:
http://serverName/index.php?m=Blog&a=read&id=1
若是當前URL設置爲PATHINFO模式的話,一樣的方法最後生成的URL地址是:
http://serverName/index.php/Home/Blog/read/id/1
若是當前URL設置爲REWRITE模式的話,一樣的方法最後生成的URL地址是:
http://serverName/Home/Blog/read/id/1
若是當前URL設置爲REWRITE模式,而且設置了僞靜態後綴爲.html的話,一樣的方法最後生成的URL地址
是:
http://serverName/Home/Blog/read/id/1.html
若是開啓了 URL_CASE_INSENSITIVE ,則會統一輩子成小寫的URL地址。函數

生成路由地址

U方法還能夠支持路由,若是咱們定義了一個路由規則爲:
'news/:id\d'=>'News/read'
那麼能夠使用
U('/news/1');
最終生成的URL地址是:spa

http://servername/index.php/Home/news/1server

注意:若是你是在模板文件中直接使用U方法的話,須要採用 {:U('參數1', '參數2'…)} 的方式,具體參考
模板的使用函數內容。xml

域名支持

若是你的應用涉及到多個子域名的操做地址,那麼也能夠在U方法裏面指定須要生成地址的域名,例如:
U('Blog/read@blog.thinkphp.cn','id=1');
@後面傳入須要指定的域名便可。
系統會自動判斷當前是否SSL協議,生成 https:// 。
此外,U方法的第4個參數若是設置爲true,表示自動識別當前的域名,而且會自動根據子域名部署設置
APP_SUB_DOMAIN_DEPLOY 和 APP_SUB_DOMAIN_RULES 自動匹配生成當前地址的子域名。htm

錨點支持

U函數能夠直接生成URL地址中的錨點,例如:
U('Blog/read#comment?id=1');
生成的URL地址多是:
http://serverName/index.php/Home/Blog/read/id/1#commentblog

相關文章
相關標籤/搜索