thinkphp框架实现路由重定义简化url访问地址的方法分析


Posted in PHP onApril 04, 2020

本文实例讲述了thinkphp框架实现路由重定义简化url访问地址的方法。分享给大家供大家参考,具体如下:

如果按照正常访问的话,则需要输入一长串的url地址,这样会显得十分冗长,我可以可以通过对路由规则的重新定义简化url访问地址。

<?php
namespace app\index\controller;
class Index{
   public function index(){
     return '我是index';
   }
   public function hello($name='World'){
     return  'Hello'.$name.'!';
   }
}
?>

本来的访问路径应该是:

localhost/tp/index.php/index/index/hello

我们在路由定义文件(application/route.php)里面添加一些路由规则,如下:

return [
  // 添加路由规则 路由到 index控制器的hello操作方法' hello/:name' => 'index/index/hello',
];

这是以hello开头的并且带参数的访问都会路由到index控制器的hello操作方法。

此时路径可以写为:

localhost/tp/hello/Thinkphp

此时输出结果为:

HelloThinkphp!

改变路由规则后若使用原来的路径访问方法后,则会出现错误。

但此时有一个问题是,如果访问地址为:

localhost/tp/hello

话,会抛出 模板不存在的错误,因为在访问时,没有传参,而在定义路由规则时,则带有参数。

解决办法是在修改路由规则为:

return [
  // 添加路由规则 路由到 index控制器的hello操作方法' hello/[:name'] => 'index/index/hello',
];

使用[]把路由规则中的变量包起来,就表示该变量为可选,接下来就可以正常访问了。

当name参数没有传入值的时候,hello方法的name参数有默认值World,所以输出的内容为

Hello,World!

除了路由配置文件中定义之外,还可以采用动态定义路由规则的方式定义,例如在路由配置文件(application/route.php)的开头直接添加下面的方法:

use think\Route;
 
Route::rule('hello/:name', 'index/hello');

完成的效果和使用配置方式定义是一样的。

无论是配置方式还是通过Route类的方法定义路由,都统一放到路由配置文件application/route.php文件中

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP新手上路(四)
Oct 09 PHP
php 在线打包_支持子目录
Jun 28 PHP
一个php Mysql类 可以参考学习熟悉下
Jun 21 PHP
php 在文件指定行插入数据的代码
May 08 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
Jun 21 PHP
php查询ip所在地的方法
Dec 05 PHP
PHP实现事件机制的方法
Jul 10 PHP
Apache启动报错No space left on device: AH00023该怎么解决
Oct 16 PHP
php代码架构的八点注意事项
Jan 25 PHP
smarty循环嵌套用法示例分析
Jul 19 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
Aug 11 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
Apr 04 #PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 04 #PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
Apr 04 #PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 #PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
Apr 04 #PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
Apr 04 #PHP
phpQuery采集网页实现代码实例
Apr 02 #PHP
You might like
无线电广播与收音机发展的历史回眸
2021/03/02 无线电
用PHP连接Oracle for NT 远程数据库
2006/10/09 PHP
JSON扫盲帖 JSON.as类教程
2009/02/16 Javascript
dotopAlert 提示用户需安装播放器的代码
2012/09/17 Javascript
JavaScript严格模式禁用With语句的原因
2014/10/20 Javascript
jQuery on()绑定动态元素出现的问题小结
2016/02/19 Javascript
JS实现点击表头表格自动排序(含数字、字符串、日期)
2017/01/22 Javascript
JavaScript中for循环的几种写法与效率总结
2017/02/03 Javascript
js动态获取时间的方法分析
2019/08/02 Javascript
javascript+css实现俄罗斯方块小游戏
2020/06/28 Javascript
vuex的数据渲染与修改浅析
2020/11/26 Vue.js
[59:08]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第一局
2016/02/27 DOTA
使用django-suit为django 1.7 admin后台添加模板
2014/11/18 Python
Python使用scrapy抓取网站sitemap信息的方法
2015/04/08 Python
Python实现比较两个列表(list)范围
2015/06/12 Python
python开发之IDEL(Python GUI)的使用方法图文详解
2015/11/12 Python
Python实现屏幕截图的代码及函数详解
2016/10/01 Python
浅谈Python实现贪心算法与活动安排问题
2017/12/19 Python
selenium+python实现自动登录脚本
2018/04/22 Python
python获取命令行输入参数列表的实例代码
2018/06/23 Python
在python下读取并展示raw格式的图片实例
2019/01/24 Python
Flask中endpoint的理解(小结)
2019/12/11 Python
利用CSS3实现动态的二级三级菜单效果实例源码
2017/01/04 HTML / CSS
html5的新增的标签和废除的标签简要概述
2013/02/20 HTML / CSS
英国最大的笔记本电脑直销专家:Laptops Direct
2019/07/20 全球购物
Java面试笔试题大全
2016/11/23 面试题
妇产科护士自我鉴定
2013/10/15 职场文书
合伙经营协议书范本
2014/09/13 职场文书
党员干部反四风对照检查材料思想汇报
2014/09/14 职场文书
新员工入职欢迎词
2015/01/23 职场文书
全国助残日活动总结
2015/05/11 职场文书
经费申请报告范文
2015/05/18 职场文书
运动会新闻稿
2015/07/17 职场文书
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python
如何用六步教会你使用python爬虫爬取数据
2022/04/06 Python
HTML5页面打开微信小程序功能实现
2022/09/23 HTML / CSS