常用:

控制器中:

U('admin/index')    解析后:  /index.php/Home/admin/index.html

U('admin/index',array('id'=>2,'name'=>'test'))  解析后: /index.php/Home/admin/index/id/2/name/test.html

U('home/admin/index',array('id'=>2,'name'=>'test'))  解析后: /index.php/home/admin/index/id/2/name/test.html

视图中:

{:U('admin/index') }

为了配合所使用的URL模式,我们需要能够动态的根据当前的URL设置生成对应的URL地址,为此,ThinkPHP内置提供了U方法,用于URL的动态生成,可以确保项目在移植过程中不受环境的影响。

定义规则

U方法的定义规则如下(方括号内参数根据实际应用决定):

U('地址表达式',['参数'],['伪静态后缀'],['显示域名'])

地址表达式

地址表达式的格式定义如下:

  1. [模块/控制器/操作#锚点@域名]?参数1=值1&参数2=值2...

如果不定义模块的话 就表示当前模块名称,下面是一些简单的例子:

  1. U('User/add') // 生成User控制器的add操作的URL地址
  2. U('Blog/read?id=1') // 生成Blog控制器的read操作 并且id为1的URL地址
  3. U('Admin/User/select') // 生成Admin模块的User控制器的select操作的URL地址
参数

U方法的第二个参数支持数组和字符串两种定义方式,如果只是字符串方式的参数可以在第一个参数中定义,例如:

  1. U('Blog/cate',array('cate_id'=>1,'status'=>1))
  2. U('Blog/cate','cate_id=1&status=1')
  3. U('Blog/cate?cate_id=1&status=1')

三种方式是等效的,都是生成Blog控制器的cate操作 并且cate_id为1 status为1的URL地址。

但是不允许使用下面的定义方式来传参数

  1. U('Blog/cate/cate_id/1/status/1');
伪静态后缀

U函数会自动识别当前配置的伪静态后缀,如果你需要指定后缀生成URL地址的话,可以显式传入,例如:

  1. U('Blog/cate','cate_id=1&status=1','xml');

自动识别

根据项目的不同URL设置,同样的U方法调用可以智能地对应产生不同的URL地址效果,例如针对:

  1. U('Blog/read?id=1');

这个定义为例。

如果当前URL设置为普通模式的话,最后生成的URL地址是:

  1. http://serverName/index.php?m=Blog&a=read&id=1

如果当前URL设置为PATHINFO模式的话,同样的方法最后生成的URL地址是:

  1. http://serverName/index.php/Home/Blog/read/id/1

如果当前URL设置为REWRITE模式的话,同样的方法最后生成的URL地址是:

  1. http://serverName/Home/Blog/read/id/1

如果当前URL设置为REWRITE模式,并且设置了伪静态后缀为.html的话,同样的方法最后生成的URL地址是:

  1. http://serverName/Home/Blog/read/id/1.html

如果开启了URL_CASE_INSENSITIVE,则会统一生成小写的URL地址。

生成路由地址

U方法还可以支持路由,如果我们定义了一个路由规则为:

  1. 'news/:id\d'=>'News/read'

那么可以使用

  1. U('/news/1');

最终生成的URL地址是:

  1. http://serverName/index.php/Home/news/1

注意:如果你是在模板文件中直接使用U方法的话,需要采用 {:U('参数1', '参数2'…)} 的方式,具体参考模板的使用函数内容。

域名支持

如果你的应用涉及到多个子域名的操作地址,那么也可以在U方法里面指定需要生成地址的域名,例如:

  1. U('Blog/read@blog.thinkphp.cn','id=1');

@后面传入需要指定的域名即可。

系统会自动判断当前是否SSL协议,生成https://

此外,U方法的第4个参数如果设置为true,表示自动识别当前的域名,并且会自动根据子域名部署设置APP_SUB_DOMAIN_DEPLOYAPP_SUB_DOMAIN_RULES自动匹配生成当前地址的子域名。

锚点支持

U函数可以直接生成URL地址中的锚点,例如:

  1. U('Blog/read#comment?id=1');

生成的URL地址可能是:

  1. http://serverName/index.php/Home/Blog/read/id/1#comment

tp3.2 URL生成相关推荐

  1. php国外地址生成,thinkphp url生成

    为了配合所使用的URL模式,我们需要能够动态的根据当前的URL设置生成对应的URL地址,为此,ThinkPHP内置提供了U方法,用于URL的动态生成,可以确保项目在移植过程中不受环境的影响. 定义规则 ...

  2. [转]Laravel 4之URL生成

    Laravel 4之URL生成 http://dingjiannan.com/2013/laravel-url/ 获取当前URL 获取当前URL有两种方式,URL::current()或URL::fu ...

  3. PHP根据指定url生成二维码图片

    一.composer安装 http://packagist.p2hp.com/packages/codeitnowin/barcode 二.使用 调用generateQrCode()方法即可实现生成二 ...

  4. tp3 普通模式url模式_[tp3.2.1]开启URL(重写模式),省略URL中的index.php

    重写模式(省略url中的index.php) 在apache配置文件httpd.conf中,查找 1.mod_rewrite.so, 启动此模块 2.AllowOverride , 值= All 3. ...

  5. php如何生成伪静态url,thinkphp控制器(三) 伪静态及URL生成

    URL伪静态通常是为了满足更好的SEO效果,ThinkPHP支持伪静态URL设置,可以通过设置URL_HTML_SUFFIX参数随意在URL的最后增加你想要的静态后缀,而不会影响当前操作的正常执行.例 ...

  6. 网站url生成二维码

    1.导入maven依赖 <!-- https://mvnrepository.com/artifact/com.google.zxing/core --> <dependency&g ...

  7. Java实现将文本内容、网址链接url,生成二维码与反解析

    2019独角兽企业重金招聘Python工程师标准>>> Java实现将文本内容.网址链接url,生成二维码与反解析 QR码的"QR"是Quick Response ...

  8. Android 实现URL生成二维码

    Android 实现URL生成二维码 代码主体 public Bitmap createQRCode(String url, int width, int height) {try {Hashtabl ...

  9. URL生成短链接API接口

    1.前言 URL生成短链接口,可将长链接生成短链,方便分发和推广. 查看接口完整信息:https://www.idmayi.com/doc/detail?id=26 2.接口明细 注意:app_id和 ...

  10. JAVA线程根据给定URL生成网页快照

    最近项目中遇到这样一个需求,根据一个动态的URL来生成对应的网页快照.网上找了很多资料,最终采用如下方法解决. 生成原理:将动态URL的页面先生成HTML文件,然后再根据生成的HTML生成快照.生成的 ...

最新文章

  1. 我的第一个VUE示例
  2. lambda expressions are not supported at this language level
  3. python3.6运行界面_Electron+Python界面开发(通过zerorpc)
  4. 记一次 .NET 某云采购平台API 挂死分析
  5. mac mysql本地连接数_Mac OS X下MySQL 5.0的默认连接数
  6. python都可以开发什么_Python的优势到底是什么?Python都能开发什么?
  7. pytorch-alexnet-推理
  8. LTE系统各种指标概念(EVM,ACLR)
  9. java sort 字符串_java字符串怎么排序
  10. 浅谈android应用之编程语言
  11. 树莓派如何安装 Python 环境
  12. unity 3d实例:创建游戏对象、旋转的立方体、Unity3D Button、图片按钮、Box控件、Label控件、Background Color、Color
  13. 基于TB67S109AFNAG的步进电机控制板分享
  14. 初学Android,图形图像之使用Canvas,Paint绘图(二十五)
  15. cmd进入指定目录方法
  16. Android组件化实战五: APT的高级用法JavaPoet
  17. Python爬虫:利用Python爬取网站上加 密 的 视 频
  18. SATA协议OOB随笔
  19. MTKAndroidP平台实现应用单独控制Camera某些效果参数
  20. 让自己不烦心的心理暗示

热门文章

  1. Flume中的flume-env.sh和log4j.properties配置调整建议(图文详解)
  2. 光伏行业缘何抢屋顶?
  3. 数据库备份与还原的过程中介质集有2个介质簇,但只提供了1个。必须提供所有成员...
  4. python IO多路复用之select
  5. 影像测量仪使用的注意点
  6. 评说SAP Business ByDesign
  7. Android Camera2+HAL3架构
  8. 在shell或bash执行一个bin文件或者脚本的流程
  9. 交叉编译中libtool相关的问题
  10. 从mp4,flv文件中解析出h264和aac,送解码器解码失败