ThinkPHP开发指南-控制器之URL生成:修订间差异

来自站长百科
跳转至: 导航、​ 搜索
无编辑摘要
无编辑摘要
 
第3行: 第3行:




为了配合所使用的[[URL]]模式,我们需要能够动态的根据当前的URL设置生成对应的URL地址,为此,[[ThinkPHP]]内置提供了U方法,用于URL的动态生成,可以确保项目在移植过程中不受环境的影响。


'''U方法的定义规则如下(方括号内参数根据实际应用决定):'''


*U('[项目://][路由@][分组名-模块/]操作? 参数1=值1[&参数N=值N]')


或者用数组的方式传入参数


*U('[项目://][路由@][分组名-模块/]操作',array('参数1'=>'值1' [,'参数N'=>'值N']))


如果不定义项目和模块的话 就表示当前项目和模块名称,下面是一些简单的例子:


U('Myapp://User/add') // 生成Myapp项目的User模块的add操作的URL地址


U('Blog/read?id=1') // 生成Blog模块的read操作 并且id为1的URL地址


U('Admin-User/select') // 生成Admin分组的User模块的select操作的URL地址


参数请确保使用 ?id=1&name=tp或者数组的方式来定义,虽然有些情况下U('Blog/read/id/1')和U('Blog/read?id=1')的效果一样,但是在不同的URL设置情况下,会导致解析的错误。


根据项目的不同URL设置,同样的U方法调用可以智能地对应产生不同的URL地址效果,例如针对U('Blog/read?id=1')这个定义为例。


*如果当前URL设置为'''普通模式'''的话,最后生成的URL地址是: <nowiki>http://<serverName>/index.php?m=Blog&a=read&id=1 </nowiki>


*如果当前URL设置为'''PATHINFO模'''式的话,同样的方法最后生成的URL地址是: <nowiki>http://<serverName>/index.php/Blog/read/id/1 </nowiki>


*如果当前URL设置为'''REWRITE模式'''的话,同样的方法最后生成的URL地址是:<nowiki> http://<serverName>/Blog/read/id/1 </nowiki>


*如果当前URL设置为'''REWRITE模式''',并且设置了伪静态后缀为.html的话,同样的方法最后生成的URL地址是:<nowiki> http://<serverName>/Blog/read/id/1.html </nowiki>


 
U方法还可以支持路由,如果我们定义了一个名称为View的路由,指向Blog模块的read操作,参数是id,那么U('View@?id=1')生成的URL地址是:<nowiki>http://<serverName>/index.php/View/id/1</nowiki>
 
 
 


[[category:ThinkPHP]]
[[category:ThinkPHP]]

2010年4月30日 (五) 09:39的最新版本

导航:返回上一页


为了配合所使用的URL模式,我们需要能够动态的根据当前的URL设置生成对应的URL地址,为此,ThinkPHP内置提供了U方法,用于URL的动态生成,可以确保项目在移植过程中不受环境的影响。

U方法的定义规则如下(方括号内参数根据实际应用决定):

  • U('[项目://][路由@][分组名-模块/]操作? 参数1=值1[&参数N=值N]')

或者用数组的方式传入参数

  • U('[项目://][路由@][分组名-模块/]操作',array('参数1'=>'值1' [,'参数N'=>'值N']))

如果不定义项目和模块的话 就表示当前项目和模块名称,下面是一些简单的例子:

U('Myapp://User/add') // 生成Myapp项目的User模块的add操作的URL地址

U('Blog/read?id=1') // 生成Blog模块的read操作 并且id为1的URL地址

U('Admin-User/select') // 生成Admin分组的User模块的select操作的URL地址

参数请确保使用 ?id=1&name=tp或者数组的方式来定义,虽然有些情况下U('Blog/read/id/1')和U('Blog/read?id=1')的效果一样,但是在不同的URL设置情况下,会导致解析的错误。

根据项目的不同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
  • 如果当前URL设置为REWRITE模式,并且设置了伪静态后缀为.html的话,同样的方法最后生成的URL地址是: http://<serverName>/Blog/read/id/1.html

U方法还可以支持路由,如果我们定义了一个名称为View的路由,指向Blog模块的read操作,参数是id,那么U('View@?id=1')生成的URL地址是:http://<serverName>/index.php/View/id/1