1. 程式人生 > >thinkphp U方法 U函式詳細解析

thinkphp U方法 U函式詳細解析

U方法用於完成對URL地址的組裝,特點在於可以自動根據當前的URL模式和設定生成對應的URL地址,格式為:
U('地址','引數','偽靜態','是否跳轉','顯示域名');
在模板中使用U方法而不是固定寫死URL地址的好處在於,一旦你的環境變化或者引數設定改變,你不需要更改模板中的任何程式碼。
在模板中的呼叫格式需要採用 {:U('地址', '引數'…)} 的方式
 

基本用法

U方法的用法示例:

 U('User/add') // 生成User模組的add操作地址

也可以支援分組呼叫:

U('Home/User/add') // 生成Home分組的User模組的add操作地址

當然,也可以只是寫操作名,表示呼叫當前模組的

U('add') // 生成當前訪問模組的add操作地址

除了分組、模組和操作名之外,我們也可以傳入一些引數:

U('Blog/read?id=1') // 生成Blog模組的read操作 並且id為1的URL地址

U方法的第二個引數支援傳入引數,支援陣列和字串兩種定義方式,如果只是字串方式的引數可以在第一個引數中定義,下面幾種方式都是等效的:

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')

但是不允許使用下面的定義方式來傳引數:

U('Blog/cate/cate_id/1/status/1')

根據專案的不同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/Blog/read/id/1

如果當前URL設定為REWRITE模式的話,同樣的方法最後生成的URL地址是:

http://serverName/Blog/read/id/1

如果你同時還設定了PATHINFO分隔符的話:

'URL_PATHINFO_DEPR'=>'_'

就會生成

http://serverName/Blog_read_id_1

如果當前URL設定為REWRITE模式,並且設定了偽靜態字尾為html的話,同樣的方法最後生成的URL地址是:

http://serverName/Blog/read/id/1.html

如果設定了多個偽靜態支援,那麼會自動取第一個偽靜態字尾新增到URL地址後面,當然你也可以手動在U方法裡面指定要生成的偽靜態字尾,例如:

U('Blog/read','id=1','xml')

就會生成

http://serverName/Blog/read/id/1.xml

路由支援

U方法還可以支援路由,如果我們定義了一個路由規則為:

'news/:id\d'=>'News/read'

那麼可以使用

U('/news/1')

最終生成的URL地址是:

http://serverName/index.php/news/1

域名支援

如果你的應用涉及到多個子域名的操作地址,那麼也可以在U方法裡面指定需要生成地址的域名,例如:

U('Blog/[email protected]','id=1');

@後面傳入需要指定的域名即可。

此外,U方法的第5個引數如果設定為true,表示自動識別當前的域名,並且會自動根據子域名部署設定APP_SUB_DOMAIN_DEPLOY和APP_SUB_DOMAIN_RULES自動匹配生成當前地址的子域名。
如果開啟了URL_CASE_INSENSITIVE,則會統一生成小寫的URL地址。

錨點支援

3.1.2版本開始,U方法還可以支援生成URL地址中的錨點,例如:

U('Blog/read#comment','id=1','html')

就會生成

http://serverName/Blog/read/id/1.html#comment

如果域名和錨點同時使用的話,注意順序為先錨點後域名,例如:

  1. U('Blog/read#[email protected]','id=1');

相關推薦

thinkphp U方法 U函式詳細解析

U方法用於完成對URL地址的組裝,特點在於可以自動根據當前的URL模式和設定生成對應的URL地址,格式為:U('地址','引數','偽靜態','是否跳轉','顯示域名'); 在模板中使用U方法而不是固定寫死URL地址的好處在於,一旦你的環境變化或者引數設定改變,你不需要更改模

《機器學習實戰》(第二章)中函式詳細解析

本文是針對《機器學習實戰》內函式的解析。並以頁數呈現。 P19:numpy.tile(A,rep)函式 當rep為數字時,生成一個一維重複rep次的list。 當rep為元組(m,n)時,生成一個m行並且每行重複n次的矩陣。 import numpy as np a1

CreateFile 函式詳細解析

前言:    在Windows程式設計中CreateFile函式是用得非常多的,由於它的引數比較多比較複雜,在使用的時候容易出現問題,在學習了MSDN的官方文件後打算將其原文翻譯出來,以供參考,如有錯誤,歡迎指正:[email protected]點comCreat

DeviceIoControl 函式詳細解析

前言:    最近需要對Windows中的裝置進行程式設計操作,其中涉及到非常重要的函式DeviceIoControl,在使用的時候也比較的複雜,國內這一塊中文資料比較少,在學習之餘順便將其翻譯出來,以供參考,如有錯誤,歡迎指正。[email protected]點

ThinkPHP U方法

blog rank ken book use code 方法 logs clas 方法1: {:U(‘User/Booking/bookingdetails‘)} 方法2: {:U(‘User/Booking/bookingdetails‘)}"+"&acto

ThinkPHP模板內使用U方法

原文地址:https://www.cnblogs.com/xiaoliwang/p/8001715.html 三種攜帶引數的方法: U('Blog/cate',array('cate_id'=>1,'status'=>1)) U('Blog/cate','cate_id=1&

ThinkPHP URL偽靜態和U方法的使用

首先, 在配置檔案(config.php)裡設定 URL_HTML_SUFFIX 設定靜態字尾 <?php return array( 'URL_HTML_SUFFIX'=>'.html', //隨意, 可設定其它的。 .... //其它配置資訊

thinkphpU方法按路由規則生成url

//更改模組配置檔案 'URL_ROUTER_ON' => true, 'URL_ROUTE_RULES'=>[]//編寫路由優化 tp開啟路由後,使用U方法是不會按路由規則生成url的,一般我們是要手動修改模版,把裡面的U方法

誤刪除的U盤數據恢復方法 U盤數據恢復方法

U盤既便攜帶又美觀小巧,深受人們喜愛。但是U盤作為一個存儲功能時常被用來存儲數據作為備份,和傳輸數據。有時候U盤會損壞有些數據讀不出來或者數據莫名丟失。 如果我們想要恢復我們U盤裏面刪除的文件,那麽我們可以使用強力U盤數據恢復大師這款專業的數據恢復軟件進行恢復操作。這款軟件功能強大,我

Linux內存使用方法詳細解析

滿足 trac 不可 drs color 很遺憾 地址空間 多少 root 我是一名程序員,那麽我在這裏以一個程序員的角度來講解Linux內存的使用。 一提到內存管理,我們頭腦中閃出的兩個概念,就是虛擬內存,與物理內存。這兩個概念主要來自於linux內核的支持。 Linu

詳細解析js中的混合方式構造物件(構造加屬性,原型加方法

詳細解析混合方式構造物件 js程式碼如下 function CreatePerson(name, qq) //用建構函式加屬性 { //原料 +new 系統偷偷替咱們做 //var obj=ne

C/C++——strcpy函式的 幾種 實現 和 詳細 解析

C/C++——strcpy函式的實現 和解析 題目:      已知strcpy函式的原型是:         &nb

JVM中GC虛擬機器使用方法詳細解析

物件是否存活 Java的GC基於可達性分析演算法(Python用引用計數法),通過可達性分析來判定物件是否存活。這個演算法的基本思想是通過一系列"GC Roots"的物件作為起始點,從這些節點開始向下搜尋,搜尋所走過的路徑稱為引用鏈,當一個物件到GC Roots沒有任何引用鏈相連時(圖論稱

Java載入器中ClassLoader使用方法詳細解析

ClassLoader 做什麼的? 顧名思義,它是用來載入 Class 的。它負責將 Class 的位元組碼形式轉換成記憶體形式的 Class 物件。位元組碼可以來自於磁碟檔案 .class,也可以是 jar 包裡的 .class,也可以來自遠端伺服器提供的位元組流,位元組碼的本質就是一個

RelativeLayout控制元件居中詳細解析(可能是最完美的方法

在RelativeLayout中設定控制元件全部居中,需要注意在父佈局的一些細節設定即可,現在給出完美的解決方法,先看例項: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xml

詳細解析PHP常用的加密函式,crypt()、md5()和sha1()

資料加密的原理就是對原來明文的檔案或資料按照某種演算法進行處理,使其成為不可讀的一段程式碼,通常稱為“密文”。 一、crypt() crypt()函式可以完成單向加密功能,語法是: string crypt(string str[,string salt]) 其中,str是需要加密

【ARM-Linux開發】U-Boot啟動過程--詳細版的完全分析

----------------------------------------------------------------------------------------------------------------------------------------

python3.5 enumerate函式解析及使用方法

# Author Richard_Kong # !/usr/bin/env python # --*-- encoding:utf-8 --*-- """enumerate的使用方法""" f = open('lyrics',encoding='utf-8') # 可以打印出

U盤安裝Linux詳細步驟

1. U盤安裝Linux詳細步驟 網址 :https://jingyan.baidu.com/article/59703552b61eb78fc0074027.html     2. 安裝CentOS7出現dracut:/#......time(d

select函式詳細用法解析

1.表頭檔案 #include #include #include 2.函式原型 int select(int n,fd_set * readfds,fd_set * writefds,fd_set * exceptfds,struct timeval * timeo