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 相关文章推荐
从MySQL数据库表中取出随机数据的代码
Sep 05 PHP
PHP fgetcsv 定义和用法(附windows与linux下兼容问题)
May 29 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
Jun 18 PHP
解析csv数据导入mysql的方法
Jul 01 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
Apr 17 PHP
浅析php单例模式
Nov 25 PHP
PHP使用JSON和将json还原成数组
Feb 12 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
Mar 29 PHP
利用PHP获取网站访客的所在地位置
Jan 18 PHP
php基于Redis消息队列实现的消息推送的方法
Nov 28 PHP
PHP使用redis位图bitMap 实现签到功能
Oct 08 PHP
PHP预定义接口――Iterator用法示例
Jun 05 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
分享8个最佳的代码片段在线测试网站
2013/06/29 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
2014/03/25 PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
2016/08/23 PHP
[原创]php正则删除html代码中class样式属性的方法
2017/05/24 PHP
jQuery 标题的自动翻转实现代码
2009/10/14 Javascript
网站导致浏览器崩溃的原因总结(多款浏览器) 推荐
2010/04/15 Javascript
JavaScript中关于indexOf的使用方法与问题小结
2010/08/05 Javascript
jquery下checked取值问题的解决方法
2012/08/09 Javascript
基于OO的动画附加插件,可以实现弹跳、渐隐等动画效果 分享
2013/06/24 Javascript
javascript利用apply和arguments复用方法
2013/11/25 Javascript
javascript检测是否联网的实现代码
2014/09/28 Javascript
JavaScript禁止用户多次提交的两种方法
2016/07/24 Javascript
微信小程序 数据交互与渲染实例详解
2017/01/21 Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
2017/11/10 Javascript
微信小程序tabBar用法实例详解
2017/12/04 Javascript
新手必须知的Node.js 4个JavaScript基本概念
2018/09/16 Javascript
关于React动态加载路由处理的相关问题
2019/01/07 Javascript
编写更好的JavaScript条件式和匹配条件的技巧(小结)
2019/06/27 Javascript
详解JavaScript 浮点数运算的精度问题
2019/07/23 Javascript
[46:21]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
python对url格式解析的方法
2015/05/13 Python
Python利用ElementTree模块处理XML的方法详解
2017/08/31 Python
Python3 全自动更新已安装的模块实现
2020/01/06 Python
Python标准库itertools的使用方法
2020/01/17 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
2020/02/27 Python
python批量替换文件名中的共同字符实例
2020/03/05 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
2020/03/30 Python
windows+vscode安装paddleOCR运行环境的步骤
2020/11/11 Python
介绍一下linux的文件权限
2012/02/15 面试题
九年级英语教学反思
2014/01/31 职场文书
保险内勤岗位职责
2014/04/05 职场文书
岗位安全生产责任书
2014/07/28 职场文书
学习型家庭事迹材料
2014/12/20 职场文书
大学生读书笔记大全
2015/07/01 职场文书
运动会入场词
2015/07/18 职场文书
2015年中学团委工作总结
2015/07/22 职场文书