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:///index.php?m=Blog&a=read&id=1UTH
如果当前 URL 设置为 PATHINFO 模式的话, 同样的方法最后生成的 URL 地址是:
HTUhttp:///index.php/Blog/read/id/1UTH
如果当前 URL 设置为 REWRITE 模式的话, 同样的方法最后生成的 URL 地址是:
HTUhttp:///Blog/read/id/1UTH
如果当前 URL 设置为 REWRITE 模式, 并且设置了伪静态后缀为. html 的话, 同样的方法最后生成的 URL 地址是:
HTUhttp:///Blog/read/id/1.htmlUTH
此外, U 方法还可以支持路由, 如果我们定义了一个名称为 View 的路由, 指向 Blog 模块的 read 操作, 参数是 id, 那么 U('View@?id=1') 生成的 URL 地址是:
HTUhttp:///index.php/View/id/1UT
注意: U 方法的路由支持 仅支持简单路由, 不支持泛路由和正则路由
来源: https://www.php1.cn/detail/php-e66d057c5e.html