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.MVC的模板标签系统(三)
Sep 05 PHP
php下MYSQL limit的优化
Jan 10 PHP
PHP中使用cURL实现Get和Post请求的方法
Mar 13 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
Aug 10 PHP
php判断页面是否是微信打开的示例(微信打开网页)
Apr 25 PHP
php比较两个字符串长度的方法
Jul 13 PHP
PHP读取配置文件类实例(可读取ini,yaml,xml等)
Jul 28 PHP
PHP使用缓存即时输出内容(output buffering)的方法
Aug 03 PHP
php实现36进制与10进制转换功能示例
Jan 10 PHP
详解PHP中的 input属性(隐藏 只读 限制)
Aug 14 PHP
分析php://output和php://stdout的区别
May 06 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
Mar 07 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数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
php GUID生成函数和类
2014/03/10 PHP
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
2015/10/01 PHP
Yii中实现处理前后台登录的新方法
2015/12/28 PHP
Yii 2.0中场景的使用教程
2017/06/02 PHP
利用404错误页面实现UrlRewrite的实现代码
2008/08/20 Javascript
js显示时间 js显示最后修改时间
2013/01/02 Javascript
js实现感应鼠标图片透明度变化的方法
2015/02/20 Javascript
JavaScript返回0-1之间随机数的方法
2015/04/06 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
2016/08/18 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
2017/04/07 Javascript
Angular2.0实现modal对话框的方法示例
2018/02/18 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
[03:41]2018完美盛典-《Fight With Us》
2018/12/16 DOTA
Python的Django框架中的Context使用
2015/07/15 Python
Python3中的真除和Floor除法用法分析
2016/03/16 Python
Python的re模块正则表达式操作
2016/05/25 Python
Python中列表list以及list与数组array的相互转换实现方法
2017/09/22 Python
python矩阵/字典实现最短路径算法
2019/01/17 Python
Python字典对象实现原理详解
2019/07/01 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
2019/07/23 Python
python滑块验证码的破解实现
2019/11/10 Python
基于python实现对文件进行切分行
2020/04/26 Python
详解如何解决canvas图片getImageData,toDataURL跨域问题
2018/09/17 HTML / CSS
雅诗兰黛加拿大官网:Estee Lauder加拿大
2019/07/31 全球购物
什么是JNDI的上下文?如何初始化JNDI上下文
2012/03/10 面试题
专项法律服务方案
2014/06/11 职场文书
人身损害赔偿协议书范本
2014/09/27 职场文书
员工工作表现自我评价
2015/03/06 职场文书
手机销售员岗位职责
2015/04/11 职场文书
六一儿童节主持开场白
2015/05/28 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书
评估“风险”创业计划的几大要点
2019/08/12 职场文书
Pytest中skip skipif跳过用例详解
2021/06/30 Python
蓝牙耳机怎么连接电脑win11? Win11蓝牙耳机连接电脑的技巧
2023/01/09 数码科技