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

相关文章
相关标签/搜索