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檔案,內容如下:
%{REQUEST_FILENAME} !-%{REQUEST_FILENAME} !-^(.*)$ index.php/$1 [QSA,PT,
接下來,就可以用下面的URL地址訪問了:
http:
可以看到index.php被隱藏了
4.相容模式:是用於不支援PATHINFO的特殊環境,地址為:
http:
相容模式配合Web伺服器重寫規則的定義,可以達到和REWRITE模式一樣的URL效果。
http://www.bkjia.com/PHPjc/752224.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/752224.htmlTechArticleThinkPHP中U方法的用處主要是完成對url地址的組裝,在模板中使用U方法而不是固定寫死URL地址的好處在於,一旦你的環境變化或者參數設定改...