热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php获取url的锚点,URL生成·ThinkPHP3.2.2完全开发手册·看云

#URL生成[上一页](#“上一页”)[下一页](#“下一页”)为了配合所使用的URL模式,我们需要能够动态的根据当前的URL设置生成对应的URL地址,为此,ThinkPHP内置提

# URL生成

[上一页](# “上一页”)[下一页](# “下一页”)

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

### 定义规则

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

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

##### 地址表达式

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

~~~

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

~~~

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

~~~

U(‘User/add’) // 生成User控制器的add操作的URL地址

U(‘Blog/read?id=1’) // 生成Blog控制器的read操作 并且id为1的URL地址

U(‘Admin/User/select’) // 生成Admin模块的User控制器的select操作的URL地址

~~~

##### 参数

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

~~~

U(‘Blog/cate’,array(‘cate_id’=>1,’status’=>1))

U(‘Blog/cate’,’cate_id=1&status=1′)

U(‘Blog/cate?cate_id=1&status=1’)

~~~

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

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

~~~

U(‘Blog/cate/cate_id/1/status/1’);

~~~

##### 伪静态后缀

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

~~~

U(‘Blog/cate’,’cate_id=1&status=1′,’xml’);

~~~

### 自动识别

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

~~~

U(‘Blog/read?id=1’);

~~~

这个定义为例。

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

~~~

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

~~~

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

~~~

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

~~~

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

~~~

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

~~~

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

~~~

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

~~~

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

### 生成路由地址

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

~~~

‘news/:id\d’=>’News/read’

~~~

那么可以使用

~~~

U(‘/news/1’);

~~~

最终生成的URL地址是:

~~~

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

~~~

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

### 域名支持

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

~~~

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

~~~

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

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

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

### 锚点支持

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

~~~

U(‘Blog/read#comment?id=1’);

~~~

生成的URL地址可能是:

~~~

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

~~~

[上一页](# “上一页”)[下一页](# “下一页”)


推荐阅读
  • Jquery 跨域问题
    为什么80%的码农都做不了架构师?JQuery1.2后getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念。当然 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • ps:写的第一个,不足之处,欢迎拍砖---只是想用自己的方法一步步去实现一些框架看似高大上的小功能(比如说模型中的toArraytoJsonsetAtt ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
author-avatar
柳绿海蓝
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有