U 方法是 ThinkPHP 內置的一個快捷方法,能夠根據系統 URL 模式配置動態的生成智能的 URL 地址。 php
因爲 ThinkPHP 支持各類不一樣的 URL 模式,另外還有項目分組模式,所以當部署環境發生變化時,有時候可能會改變 URL 模式,而 U 方法正是解決不一樣環境配置狀況下的 URL 統一問題。除了動態生成 URL 以自適應系統配置外,U 方法還有一個好處是能夠自動加上僞靜態後綴。 html
U 方法的定義規則以下: ide
('[分組/模塊/操做]?參數' [,'參數','僞靜態後綴','是否跳轉','顯示域名'])
方括號內爲可選參數,若是不指明分組、模塊以及操做的話,就默認爲當前分組、當前模塊與當前操做。 函數
U 方法做爲 ThinkPHP 的系統函數,能夠直接用於操做方法中,也可用於模板中(見後面文字)。 ui
假設當前爲 Index 模塊的 index 操做,生成當前模塊的 list 操做 URL: spa
U('list?cat_id=1&status=1')
生成的 URL 爲相對連接:http://www.5idev.com/index.php/Index/list/cat_id/1/status/1 code
同時 U 方法還支持下面兩種定義格式,上面的例子與下面的定義格式是等效的: htm
U'list',array('cate_id'=>1,'status'=>1)) U'list','cate_id=1&status=1')
U 方法不只能在操做方法中動態生成 URL 地址,其實更經常使用的是在模板中生成超連接地址: blog
<a href="{:U('list?cat_id=1&status=1')}">超連接字符</a>
生成 URL 後實際的 html 代碼爲: 部署
// Pathinfo 模式: <a href="http://www.5idev.com/lindex.php/blog/list/cat_id/1/status/1">超連接字符</a>
U 方法屬於 ThinkPHP 系統函數,遵循在模板中使用系統函數的通用方法,即配合 {: } 使用,具體可見《ThinkPHP 模板中使用函數》。
使用於模板中的 U 方法,若是要使用變量(一般如此),須要用 . 鏈接符:
<a href="{:U('blog/list?cat_id='.$vo['cat_id'].'&status=1')}">超連接字符</a>
U 方法根據各類 URL 模式而自適應的生成不一樣的 URL 格式,如上面例子在各模式下生成的 URL 對好比下:
// 當前模塊 list 操做 U('list?cat_id=1&status=1') // 其餘模塊操做 U('Blog/read?id=1') // 生成Blog模塊的read操做,而且id爲1的URL地址 // 其餘分組 U('Admin/User/view?uid=1') // 生成Admin分組的User模塊的view操做的URL地址