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 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
Mar 23 PHP
PHP中time(),date(),mktime()区别介绍
Sep 28 PHP
PHP统计二维数组元素个数的方法
Nov 12 PHP
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
Jul 18 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
Apr 15 PHP
PHP内核学习教程之php opcode内核实现
Jan 27 PHP
PHP基本语法实例总结
Sep 09 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
Nov 05 PHP
php实现用户注册密码的crypt加密
Jun 08 PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 PHP
基于 Swoole 的微信扫码登录功能实现代码
Jan 15 PHP
php二维数组按某个键值排序的实例讲解
Feb 15 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
不错的一篇面向对象的PHP开发模式(简写版)
2007/03/15 PHP
ThinkPHP的L方法使用简介
2014/06/18 PHP
php自动提交表单的方法(基于fsockopen与curl)
2016/05/09 PHP
php调用自己java程序的方法详解
2016/05/13 PHP
js操作textarea 常用方法总结
2012/12/03 Javascript
html文档中的location对象属性理解及常见的用法
2014/08/13 Javascript
详解vuex中mapState,mapGetters,mapMutations,mapActions的作用
2018/04/13 Javascript
vuejs 制作背景淡入淡出切换动画的实例
2018/09/01 Javascript
移动端如何用下拉刷新的方式实现上拉加载
2018/12/10 Javascript
解决vue+elementui项目打包后样式变化问题
2020/08/03 Javascript
OpenLayers实现图层切换控件
2020/09/25 Javascript
Python中用Spark模块的使用教程
2015/04/13 Python
Python win32com 操作Exce的l简单方法(必看)
2017/05/25 Python
python错误调试及单元文档测试过程解析
2019/12/19 Python
python数据预处理方式 :数据降维
2020/02/24 Python
Python通过4种方式实现进程数据通信
2020/03/12 Python
Django权限控制的使用
2021/01/07 Python
HTML5响应式(自适应)网页设计的实现
2017/11/17 HTML / CSS
军用级手机壳,专为冒险而建:Zizo Wireless
2019/08/07 全球购物
SmartBuyGlasses荷兰:购买太阳镜和眼镜
2020/03/16 全球购物
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
建筑人员岗位职责
2013/12/25 职场文书
农民入党思想汇报
2014/01/03 职场文书
办理信用卡工作证明
2014/01/11 职场文书
秘书英文求职信范文
2014/01/31 职场文书
财务内勤岗位职责
2014/04/17 职场文书
大气污染防治方案
2014/05/19 职场文书
广告学专业毕业生自荐信
2014/05/28 职场文书
甜品蛋糕店创业计划书
2014/09/21 职场文书
公司表扬信格式
2015/05/04 职场文书
介绍信范文大全
2015/05/07 职场文书
2016年小学生寒假总结
2015/10/10 职场文书
高一数学教学反思
2016/02/18 职场文书
Python3.10的一些新特性原理分析
2021/09/15 Python
Java GUI编程菜单组件实例详解
2022/04/07 Java/Android
Python通用验证码识别OCR库ddddocr的安装使用教程
2022/07/07 Python