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->)。

onethink U方法相关推荐

  1. amazon 工作流服务_我在亚马逊仓库找了份工作,却没有和一个人说话

    amazon 工作流服务 重点 (Top highlight) A few weeks ago, I had just completed an application to work in a wa ...

  2. 在 Oracle Enterprise Linux 和 iSCSI 上构建您自己的 Oracle RAC 11g 集群

    作者:Jeffrey Hunter 了解如何以低于 2,700 美元的费用在 Oracle Enterprise Linux 上安装并配置 Oracle RAC 11g 第 2 版开发集群. 本指南中 ...

  3. Java面试题大全2021版

    一.Java 基础 JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java Run ...

  4. php addall,ThinkPHP3.2框架使用addAll()批量插入数据的方法

    这篇文章主要介绍了ThinkPHP3.2框架使用addAll()批量插入数据的方法,结合实例形式分析了thinkPHP针对单条数据插入及批量数据插入操作的相关实现技巧,需要的朋友可以参考下 本文实例讲 ...

  5. thinkphp mysql批量入库_ThinkPHP3.2框架使用addAll()批量插入数据的方法

    本文实例讲述了ThinkPHP3.2框架使用addAll()批量插入数据的方法.分享给大家供大家参考,具体如下: thinkphp中model类的addAll()方法可以将数据同时添加到数据库中. / ...

  6. addall php,ThinkPHP3.2框架使用addAll()批量插入数据的方法

    本文实例讲述了ThinkPHP3.2框架使用addAll()批量插入数据的方法.分享给大家供大家参考,具体如下: thinkphp中model类的addAll()方法可以将数据同时添加到数据库中. / ...

  7. onethink钩子

    首先聊聊钩子吧,其实,刚开始接触onethink时,我也挺晕的,后面发现,这个钩子 和 我曾经用的一个博客系统里面的挂载点 很像!甚至就可以说,钩子就是挂载点 挂载点:在系统中提供给你一个挂载点,我们 ...

  8. apmserv 5.2.6 php升级,APMServ5.2.6升级PHP版本和启用GD库等插件的方法

    这两天看了下ThinkPHP3.2手册,感觉上要比3.1更好用些,虽然很多人吐槽无法顺利升级框架.本打算用3.2的框架写个超简单的站,因为功能就只有一点,实在懒得用什么现成程序了.可看了下OneThi ...

  9. onethink中修改ucenter用户的密码

    onethink安装好之后,数据库中的两张表(忽略表前缀):ucenter_member和member表将作为用户表存在.在Admin后台新增用户时,这两张表将进行插入操作. 不过,如果想自己在前台注 ...

最新文章

  1. FFT ---- 2021牛客多校第一场 H Hash Function
  2. 大数据分析之环境部署
  3. stm32程序怎么设置apb2总线时钟_stm32学习笔记
  4. web网页期末作业-在线教育
  5. 关于学校计算机的情景剧剧本,有关学校后勤的情景剧剧本《默默奉献》
  6. java integer 不变模式_《JAVA与模式》之不变模式
  7. 海淘第一单——KindleTouch
  8. 20170708xlVBA添加新产品修改公式
  9. maven向本土仓库导入jar包(处理官网没有的jar包)
  10. 豆丁文档无需豆元直接下载
  11. c语言 停车管理系统
  12. 【MATLAB imagesc 背景色】
  13. 测试质量体系搭建--测试团队目标
  14. 微信设置字体后微信浏览器页面字体也会跟着改变的解决办法
  15. APP开通支付宝支付 转账功能
  16. 计算机专业简历教育背景怎么写,简历中的教育背景应该怎么写
  17. windows下C盘文件夹管理员权限设置
  18. 云服务器显示异地登录,云服务器异地登录异常
  19. 用 JAVA 实现画板
  20. GlobalSign的旗下的SSL证书产品

热门文章

  1. java画脸_二次元人物侧脸怎么画?对于初学者来说怎么画?
  2. 【行研报告】2021年中国团餐行业研究分析报告—附下载
  3. SQL Server 中as语句后加英文,标点符号等内容
  4. 图灵奖:Tony Hoare、John Edward Hopcroft和Barbara Liskov
  5. 利用SimLab软件进行参数敏感性分析
  6. 应届生面试时,关于着装的注意事项|智测优聘总结
  7. Visual Studio VS使用freopen调试控制台闪退
  8. cmd如何实现快速粘贴复制
  9. Bundle的使用示例
  10. Python之计算24点