thinkphp中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地址是:
htuhttp://<servername>/index.php?m=blog&a=read&id=1uth
如果当前url设置为pathinfo模式的话,同样的方法最后生成的url地址是:
htuhttp://<servername>/index.php/blog/read/id/1uth
如果当前url设置为rewrite模式的话,同样的方法最后生成的url地址是:
htuhttp://<servername>/blog/read/id/1uth
如果当前url设置为rewrite模式,并且设置了伪静态后缀为.html的话,同样的方法最后生成的url地址是:
htuhttp://<servername>/blog/read/id/1.htmluth
此外,u方法还可以支持路由,如果我们定义了一个名称为view的路由,指向blog模块的read操作,参数是id,那么u('view@?id=1')生成的url地址是:
htuhttp://<servername>/index.php/view/id/1ut
注意:u方法的路由支持 仅支持简单路由,不支持泛路由和正则路由。
更多信息请查看IT技术专栏