ThinkPHP中U方法的用處主要是完成對url地址的組裝,在模板中使用U方法而不是固定寫死URL地址的好處在於,一旦你的環境變化或者參數設置改變,你不需要更改模板中的任何代碼。在模板中的調用格式需要采用 {:U('地址', '參數'…)} 的方式,一般的形式裡面是控制器中的方法名,例如{:U('loginPage')}。完整格式為:
U('地址','參數','偽靜態','是否跳轉','顯示域名')。U方法的第二個參數支持傳入參數,支持數組和字符串兩種定義方式,如果只是字符串方式的參數可以在第一個參數中定義,下面幾種方式都是等效的:
U('Blog/cate',('cate_id'=>1,'status'=>1'Blog/cate','cate_id=1&status=1''Blog/cate?cate_id=1&status=1')
但是不允許使用下面的定義方式來傳參數:
U('Blog/cate/cate_id/1/status/1')
根據項目的不同URL設置,同樣的U方法調用可以智能地對應產生不同的URL地址效果,可以在配置文件convention.php中看到:
'URL_MODEL' => 1,
1.普通模式:也就是傳統的GET傳參方式來指定當前訪問的模塊和操作,例如:(m參數表示模塊,a操作表示操作)
http:
2.PATHINFO模式:是系統的默認URL模式,提供了最好的SEO支持,系統內部已經做了環境的兼容處理,所以能夠支持大多數的主機環境。對應上面的URL模式,PATHINFO模式下面的URL訪問地址是:
http:
3.REWRITE模式:是在PATHINFO模式的基礎上添加了重寫規則的支持,可以去掉URL地址裡面的入口文件index.php,但是需要額外配置WEB服務器的重寫規則。
如果是Apache則需要在入口文件的同級添加.htaccess文件,內容如下:
<IfModule mod_rewrite.c>%{REQUEST_FILENAME} !-%{REQUEST_FILENAME} !-^(.*)$ index.php/$1 [QSA,PT,</IfModule>
接下來,就可以用下面的URL地址訪問了:
http:
可以看到index.php被隱藏了
4.兼容模式:是用於不支持PATHINFO的特殊環境,地址為:
http:
兼容模式配合Web服務器重寫規則的定義,可以達到和REWRITE模式一樣的URL效果。