IT教程 | 加入收藏 | 简体 | 繁体
ThinkPHP:Php教程讲解Php函数讲解ThinkPHP
当前位置: 首页 > Php教程 > ThinkPHP

URL生成:根据动态的当前的URL设置生成对应的URL地址

2015-02-26来源:[www.121ask.com]热度:0℃ 【字体:

URL生成:根据动态的当前的URL设置生成对应的URL地址:
为了配合所使用的URL模式,我们需要能够动态的根据当前的URL设置生成对应的URL地址,为此,ThinkPHP内置提供了U方法,用于URL的动态生成,可以确保项目在移植过程中不受环境的影响。
U方法的定义规则如下(方括号内参数根据实际应用决定):
  1. U('[分组/模块/操作]?参数' [,'参数','伪静态后缀','是否跳转','显示域名'])
如果不定义项目和模块的话 就表示当前项目和模块名称,下面是一些简单的例子:
  1. U('User/add'// 生成User模块的add操作的URL地址
  2. U('Blog/read?id=1'// 生成Blog模块的read操作 并且id为1的URL地址
  3. U('Admin/User/select'// 生成Admin分组的User模块的select操作的URL地址
U方法的第二个参数支持数组和字符串两种定义方式,如果只是字符串方式的参数可以在第一个参数中定义,例如:
  1. U('Blog/cate',array('cate_id'=>1,'status'=>1))
  2. U('Blog/cate','cate_id=1&status=1')
  3. U('Blog/cate?cate_id=1&status=1')
三种方式是等效的,都是 生成Blog模块的cate操作 并且cate_id为1 status为1的URL地址
但是不允许使用下面的定义方式来传参数
  1. U('Blog/cate/cate_id/1/status/1')
根据项目的不同URL设置,同样的U方法调用可以智能地对应产生不同的URL地址效果,例如针对
  1. 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
如果当前URL设置为REWRITE模式,并且设置了伪静态后缀为.html的话,同样的方法最后生成的URL地址是:
http://serverName/Blog/read/id/1.html
U方法还可以支持路由,如果我们定义了一个路由规则为:
  1.  'news/:id\d'=>'News/read'
那么可以使用
  1. U'/news/1'
最终生成的URL地址是:
  1. http://serverName/index.php/news/1

注意:如果你是在模板文件中直接使用U方法的话,需要采用 {:U('参数1', '参数2'…)} 的方式,具体参考模板引擎章节的8.3 使用函数内容。

如果你的应用涉及到多个子域名的操作地址,那么也可以在U方法里面指定需要生成地址的域名,例如:
  1. U('Blog/read@blog.thinkphp.cn','id=1');
@后面传入需要指定的域名即可。

此外,U方法的第5个参数如果设置为true,表示自动识别当前的域名,并且会自动根据子域名部署设置APP_SUB_DOMAIN_DEPLOY和APP_SUB_DOMAIN_RULES自动匹配生成当前地址的子域名。
如果开启了URL_CASE_INSENSITIVE,则会统一生成小写的URL地址
以上IT文章《URL生成:根据动态的当前的URL设置生成对应的URL地址》由名客技术网[www.121ask.com]提供阅读!
名客技术网是一个免费为广大IT技术人员提供IT教程,绿色软件,asp/php/jsp/java/net等实例视频教程,CMS教程,破解软件下载以及学习相关源码、知识的IT网站。
名客技术网如果无意之中侵犯了您的版权,请来电告知,本站将在3个工作日内删除 QQ:175352796
Copyright 2011-2017 Powered by 121ASK.COM, All Rights Reserved.
备案号:鄂ICP备11013833号-1