U 方法是 ThinkPHP 内置的一个快捷方法,能够根据系统 URL 模式配置动态的生成智能的 URL 地址。 php
因为 ThinkPHP 支持各类不一样的 URL 模式,另外还有项目分组模式,所以当部署环境发生变化时,有时候可能会改变 URL 模式,而 U 方法正是解决不一样环境配置状况下的 URL 统一问题。除了动态生成 URL 以自适应系统配置外,U 方法还有一个好处是能够自动加上伪静态后缀。 html
U 方法的定义规则以下: ide
('[分组/模块/操做]?参数' [,'参数','伪静态后缀','是否跳转','显示域名'])
方括号内为可选参数,若是不指明分组、模块以及操做的话,就默认为当前分组、当前模块与当前操做。 函数
U 方法做为 ThinkPHP 的系统函数,能够直接用于操做方法中,也可用于模板中(见后面文字)。 ui
假设当前为 Index 模块的 index 操做,生成当前模块的 list 操做 URL: spa
U('list?cat_id=1&status=1')
生成的 URL 为相对连接:http://www.5idev.com/index.php/Index/list/cat_id/1/status/1 code
同时 U 方法还支持下面两种定义格式,上面的例子与下面的定义格式是等效的: htm
U'list',array('cate_id'=>1,'status'=>1)) U'list','cate_id=1&status=1')
U 方法不只能在操做方法中动态生成 URL 地址,其实更经常使用的是在模板中生成超连接地址: blog
<a href="{:U('list?cat_id=1&status=1')}">超连接字符</a>
生成 URL 后实际的 html 代码为: 部署
// Pathinfo 模式: <a href="http://www.5idev.com/lindex.php/blog/list/cat_id/1/status/1">超连接字符</a>
U 方法属于 ThinkPHP 系统函数,遵循在模板中使用系统函数的通用方法,即配合 {: } 使用,具体可见《ThinkPHP 模板中使用函数》。
使用于模板中的 U 方法,若是要使用变量(一般如此),须要用 . 链接符:
<a href="{:U('blog/list?cat_id='.$vo['cat_id'].'&status=1')}">超连接字符</a>
U 方法根据各类 URL 模式而自适应的生成不一样的 URL 格式,如上面例子在各模式下生成的 URL 对好比下:
// 当前模块 list 操做 U('list?cat_id=1&status=1') // 其余模块操做 U('Blog/read?id=1') // 生成Blog模块的read操做,而且id为1的URL地址 // 其余分组 U('Admin/User/view?uid=1') // 生成Admin分组的User模块的view操做的URL地址