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函数解决SQL injection
Oct 09 PHP
PHP防注入安全代码
Apr 09 PHP
php file_get_contents函数轻松采集html数据
Apr 22 PHP
PHP中的正则表达式函数介绍
Feb 27 PHP
php 批量生成html,txt文件的实现代码
Jun 26 PHP
浅析php中三个等号(===)和两个等号(==)的区别
Aug 06 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
Apr 01 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
Jun 30 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
Jul 30 PHP
php生成不重复随机数、数组的4种方法分享
Mar 30 PHP
基于Laravel5.4实现多字段登录功能方法示例
Aug 11 PHP
php求斐波那契数的两种实现方式【递归与递推】
Sep 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
第四节 构造函数和析构函数 [4]
2006/10/09 PHP
PHP一些有意思的小区别
2006/12/06 PHP
php 文件上传代码(限制jpg文件)
2010/01/05 PHP
PHP 第二节 数据类型之数值型
2012/04/28 PHP
php文件上传的简单实例
2013/10/19 PHP
PHP正则表达式过滤html标签属性(DEMO)
2016/05/04 PHP
PHP判断是否是微信打开,浏览器打开的方法
2018/03/14 PHP
JS学习之一个简易的日历控件
2010/03/24 Javascript
struts2+jquery+json实现异步加载数据(自写)
2013/06/24 Javascript
一个简单的jQuery计算器实现了连续计算功能
2014/07/21 Javascript
Windows8下搭建Node.js开发环境教程
2014/09/03 Javascript
JavaScript阻止事件冒泡示例分享
2014/12/28 Javascript
jQuery中:submit选择器用法实例
2015/01/03 Javascript
Angular 应用技巧总结
2016/09/14 Javascript
laydate.js日期时间选择插件
2017/01/04 Javascript
深入浅出es6模板字符串
2017/08/26 Javascript
Three.js入门之hello world以及如何绘制线
2017/09/25 Javascript
Vue.JS项目中5个经典Vuex插件
2017/11/28 Javascript
vue-prop父组件向子组件进行传值的方法
2018/03/01 Javascript
koa上传excel文件并解析的实现方法
2018/08/09 Javascript
Nodejs调用Dll模块的方法
2018/09/17 NodeJs
layui关闭弹窗后刷新主页面和当前更改项的例子
2019/09/06 Javascript
vue实现淘宝购物车功能
2020/04/20 Javascript
[08:53]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS 选手采访
2021/03/11 DOTA
Django中处理出错页面的方法
2015/07/15 Python
Django admin model 汉化显示文字的实现方法
2019/08/12 Python
canvas 实现 github404动态效果的示例代码
2017/11/15 HTML / CSS
美国女性运动零售品牌:Lady Foot Locker
2017/05/12 全球购物
美国棒球装备和用品商店:Baseball Savings
2018/06/09 全球购物
香港家用健身器材、运动器材及健康美容仪器专门店:FitBoxx
2019/12/05 全球购物
函数指针的定义是什么
2016/08/14 面试题
经济信息管理专业大学生求职信
2013/09/27 职场文书
个人租房协议书
2014/04/09 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
餐饮食品安全责任书
2015/01/29 职场文书
综合素质评价个性与发展自我评价
2015/03/06 职场文书