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 不同编码下的字符串长度区分
Sep 26 PHP
PHP 抓取网页图片并且另存为的实现代码
Mar 24 PHP
php中将地址生成迅雷快车旋风链接的代码[测试通过]
Apr 20 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
Nov 10 PHP
PHP中3种生成XML文件方法的速度效率比较
Oct 06 PHP
PHP 万年历实现代码
Oct 18 PHP
php不使用插件导出excel的简单方法
Mar 04 PHP
PHP获取文件行数的方法
Jun 10 PHP
php检查函数必传参数是否存在的实例详解
Aug 28 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
Jul 20 PHP
PHP使用反向Ajax技术实现在线客服系统详解
Jul 01 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之对抗Web扫描器的脚本技巧
2008/10/01 PHP
JavaScript延迟加载
2021/03/09 Javascript
IE Firefox 使用自定义标签的区别
2009/10/15 Javascript
Javascript面向对象编程
2012/03/18 Javascript
Jquery的Tabs内容轮换效果实现代码,几行搞定
2014/02/12 Javascript
快速掌握Node.js事件驱动模型
2016/03/21 Javascript
AngularJS基础 ng-include 指令示例讲解
2016/08/01 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
2016/09/21 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
2016/12/07 Javascript
浅谈vue-lazyload实现的详细过程
2017/08/22 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
JavaScript寄生组合式继承原理与用法分析
2019/01/11 Javascript
详解如何更好的使用module vuex
2019/03/27 Javascript
VUE安装使用教程详解
2019/06/03 Javascript
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
2019/08/26 Javascript
重置Redux的状态数据的方法实现
2019/11/18 Javascript
webpack5 联邦模块介绍详解
2020/07/08 Javascript
vue中实现拖动调整左右两侧div的宽度的示例代码
2020/07/22 Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
2020/09/21 Javascript
js观察者模式的弹幕案例
2020/11/23 Javascript
Python2.x与Python3.x的区别
2016/01/14 Python
Django异步任务之Celery的基本使用
2019/03/23 Python
pandas 使用均值填充缺失值列的小技巧分享
2019/07/04 Python
使用python-cv2实现视频的分解与合成的示例代码
2020/10/26 Python
python实现图片转字符画的完整代码
2021/02/21 Python
HTML5实现移动端复制功能
2018/04/19 HTML / CSS
美国销售第一的智能手机和平板电脑保护壳:OtterBox
2017/12/21 全球购物
西班牙床垫网上商店:Colchones.es
2018/05/06 全球购物
计算机科学与技术专业求职信
2014/09/03 职场文书
2014年师德师风工作总结
2014/11/25 职场文书
2015年保卫科工作总结
2015/05/14 职场文书
离婚起诉书怎么写
2015/05/19 职场文书
独生子女证明范本
2015/06/19 职场文书
2016年优秀共产党员先进事迹材料
2016/02/29 职场文书
PyCharm 配置SSH和SFTP连接远程服务器
2022/05/11 Python