thinkphp 使用U方法自动生成URL超链接

飘逸的风14年前 (2013-01-11)程序6232
ThinkPHP U方法
U 方法是 ThinkPHP 内置的一个快捷方法,可以根据系统 URL 模式配置动态的生成智能的 URL 地址。

由于 ThinkPHP 支持各种不同的 URL 模式,另外还有分组模式,因此当环境发生变化时,有时候可能会改变 URL 模式,而 U 方法正是解决不同配置情况下的 URL 统一问题。除了动态生成 URL 以自适应系统配置外,U 方法还有一个好处是可以自动加上伪静态后缀。

U方法语法
U 方法的定义规则如下:

U('[项目://][路由@][分组名-模块/]操作?参数1=值1[&参数N=值N]')
// 或者:
U('[项目://][路由@][分组名-模块/]操作',array('参数1'=>'值1' [,'参数N'=>'值N']))
U方法实例
假设当前为 Index 模块的 index 操作,生成当前模块的 list 操作 URL:

U('list?cat_id=1&status=1')
生成的 URL 为相对链接:index.php/Index/list/cat_id/1/status/1

模板中使用 U 方法
U 方法实际属于 ThinkPHP 系统函数,可以直接使用,更多可参见《ThinkPHP 模板中使用函数》。通常 U 方法用于模板生成超链接:

<a href="{:U('list?cat_id=1&status=1')}">超链接字符</a>
生成 URL 后实际的 html 代码为:

<a href="index.php/Index/list/cat_id/1/status/1">超链接字符</a>
U 方法中使用变量,需要用 . 连接符:

<a href="{:U('list?cat_id='.$catList['cat_id'].'&status=1')}">超链接字符</a>
各种 URL 模式下的对比
U 方法根据 URL 模式的不同而自适应的生成不同的 URL 格式,如上面例子在各模式下生成的 URL 对比如下:

普通兼容模式:index.php?m=Index&a=list&cat_id=1&status=1
PATHINFO 模式:index.php/Index/list/cat_id/1/status/1
REWRITE 模式:Index/list/cat_id/1/status/1
REWRITE 模式,伪静态后缀为 .html:Index/list/cat_id/1/status/1.html
REWRITE 模式,使用 - 分隔符与 .html 后缀:Index-list-cat_id-1-status-1.html
常见 U 方法使用例子
// 当前模块 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地址
U 方法也可以在操作中使用,与使用普通函数用法一致(不需要 $this->)。

相关文章

如何实现PHP的计划(定时)任务和暂停任务

如果在服务器做计划任务是件很简单的事情,但是有的时候收条件限制无法使用服务器自带的计划任务,比如买的空间,这时候想要让网站定时执行某些操作(处理数据、生成静态文件、清除缓存...),该怎么办呢? &...

Javascript 正则表达式使用手册

一.正则表达式匹配常用语法 “+”字符:规定表达式字符出现一次或多次。 “*”字符:规定表达式字符出现零次或多次。 “?”字符:规定表达式字符出现零次或一次。 ^ 匹配的是字符的开头 ,匹配的...

emlog SyntaxHighlighter 代码高亮插件[提供下载,更新至1.2]

emlog SyntaxHighlighter 代码高亮插件[提供下载,更新至1.2]

emlog SyntaxHighlighter 代码高亮插件,可以把代码贴在代码框中,确定后自动生成高亮代码。 注:本插件已升级,修复在代码很长换行的时候左边的行数不增加问题;插入代码里有HTML标...

ECShop设置模板的原理以及一些模板设置函数说明(个人观点)

ECShop设置模板的原理以及一些模板设置函数说明(个人观点) admin/includes/lib_template.php 一些函数及变量说明 $template_files...

可以让PHP编程事半功倍的类库

可以让PHP编程事半功倍的类库

在用php开发网站的时候,使用面向对象的方法确实可以提高代码复用率,减少代码冗余。而对初学者更友好的是,PHP开发网站所需要的大部分类库,网上都有十分优秀的类库存在了。作为一个程序猿当然不能重复制造轮...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。