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 相关文章推荐
Apache2 httpd.conf 中文版
Dec 06 PHP
discuz论坛 用户登录 后台程序代码
Nov 27 PHP
php判断输入不超过mysql的varchar字段的长度范围
Jun 24 PHP
推荐一本PHP程序猿都应该拜读的书
Dec 31 PHP
PHP实现CSV文件的导入和导出类
Mar 24 PHP
使用JavaScript创建新样式表和新样式规则
Jun 14 PHP
PHP实现RTX发送消息提醒的实例代码
Jan 03 PHP
PHP清除缓存的几种方法总结
Sep 12 PHP
Laravel框架实现修改登录和注册接口数据返回格式的方法
Aug 17 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
Apr 13 PHP
PHP中echo与print区别点整理
Mar 09 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
受疫情影响 动画《Re从零开始的异世界生活》第二季延期至7月
2020/03/10 日漫
PHP实现对图片的反色处理功能【测试可用】
2018/02/01 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
PHP convert_cyr_string()函数讲解
2019/02/13 PHP
用javascript连接access数据库的方法
2006/11/17 Javascript
js function定义函数使用心得
2010/04/15 Javascript
javascript setTimeout和setInterval计时的区别详解
2013/06/21 Javascript
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
让table变成exls的示例代码
2014/03/24 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
2015/09/14 Javascript
jQuery如何获取动态添加的元素
2016/06/24 Javascript
微信小程序 icon组件详细及实例代码
2016/10/25 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
2016/11/23 Javascript
浅谈jQuery的bind和unbind事件(绑定和解绑事件)
2017/03/02 Javascript
bootstrap table表格插件之服务器端分页实例代码
2018/09/12 Javascript
JS实现的贪吃蛇游戏完整实例
2019/01/18 Javascript
React组件对子组件children进行加强的方法
2019/06/23 Javascript
微信小程序实现电子签名并导出图片
2020/05/27 Javascript
从0搭建vue-cli4脚手架
2020/06/17 Javascript
javascript前端和后台进行数据交互方法示例
2020/08/07 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
2020/09/04 Javascript
Python实现变量数值交换及判断数组是否含有某个元素的方法
2017/09/18 Python
python查看数据类型的方法
2019/10/12 Python
python目标检测给图画框,bbox画到图上并保存案例
2020/03/10 Python
python实现超级玛丽游戏
2020/03/18 Python
python中可以声明变量类型吗
2020/06/18 Python
Python extract及contains方法代码实例
2020/09/11 Python
Python实现哲学家就餐问题实例代码
2020/11/09 Python
python xlsxwriter模块的使用
2020/12/24 Python
THE OUTNET美国官网:国际设计师品牌折扣网站
2017/03/07 全球购物
德国汉莎航空中国官网: Lufthansa中国
2017/03/30 全球购物
初中生个人学习的自我评价
2013/12/04 职场文书
高三体育教学反思
2014/01/29 职场文书
带薪年假请假条
2014/02/04 职场文书
实习生工作证明范本
2014/09/14 职场文书
教师个人师德总结
2015/02/06 职场文书