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 相关文章推荐
提问的智慧
Oct 09 PHP
如何对PHP程序中的常见漏洞进行攻击(下)
Oct 09 PHP
常用表单验证类,有了这个,一般的验证就都齐了。
Dec 06 PHP
php获取服务器信息的实现代码
Feb 04 PHP
深入PHP autoload机制的详解
Jun 09 PHP
提升PHP性能的21种方法介绍
Jun 25 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
Jun 13 PHP
PHP生成短网址的3种方法代码实例
Jul 08 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
Sep 28 PHP
php实现MySQL数据库备份与还原类实例
Dec 09 PHP
php实现处理输入转义字符的代码
Nov 08 PHP
PHP实现将标点符号正则替换为空格的方法
Aug 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
php中单个数据库字段多列显示(单字段分页、横向输出)
2014/07/28 PHP
thinkPHP下ueditor的使用方法详解
2015/12/26 PHP
Add a Table to a Word Document
2007/06/15 Javascript
js读写json文件实例代码
2014/10/21 Javascript
JavaScript实现标题栏文字轮播效果代码
2015/10/24 Javascript
输入法的回车与消息发送快捷键回车的冲突解决方法
2016/08/09 Javascript
微信小程序 利用css实现遮罩效果实例详解
2017/01/21 Javascript
微信小程序 开发之全局配置
2017/05/05 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
jQuery.Form实现Ajax上传文件同时设置headers的方法
2017/06/26 jQuery
Node.js学习之TCP/IP数据通讯(实例讲解)
2017/10/11 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
通过封装scroll.js 获取滚动条的值
2018/07/13 Javascript
深入理解Angularjs 脏值检测
2018/10/12 Javascript
bootstrap table实现合并单元格效果
2018/12/24 Javascript
Vue 中如何正确引入第三方模块的方法步骤
2019/05/05 Javascript
关于Layui Table隐藏列问题
2019/09/16 Javascript
Vue Cli3 打包配置并自动忽略console.log语句的方法
2020/04/23 Javascript
python通过floor函数舍弃小数位的方法
2015/03/17 Python
浅谈Python爬取网页的编码处理
2016/11/04 Python
Python实现SSH远程登陆,并执行命令的方法(分享)
2017/05/08 Python
python实现基于SVM手写数字识别功能
2020/05/27 Python
解决项目pycharm能运行,在终端却无法运行的问题
2019/01/19 Python
爬虫代理池Python3WebSpider源代码测试过程解析
2019/12/20 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
使用keras2.0 将Merge层改为函数式
2020/05/23 Python
10个示例带你掌握python中的元组
2020/11/23 Python
CSS3中的opacity属性使用教程
2015/08/19 HTML / CSS
H5仿微信界面教程(一)
2017/07/05 HTML / CSS
美国最大点评网站:Yelp
2018/02/14 全球购物
公民授权委托书范本
2014/09/17 职场文书
工伤私了协议书范本
2014/11/24 职场文书
农业项目投资意向书
2015/05/09 职场文书
asyncio异步编程之Task对象详解
2022/03/13 Python
vue使用refs获取嵌套组件中的值过程
2022/03/31 Vue.js
Spring JPA 增加字段执行异常问题及解决
2022/06/10 Java/Android