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 array操作10个小技巧分享
Jun 23 PHP
linux系统上支持php的 iconv()函数的方法
Oct 01 PHP
PHP中strtotime函数使用方法分享
Jan 10 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
Jun 19 PHP
php通过记录IP来防止表单重复提交方法分析
Dec 16 PHP
php禁止某ip或ip地址段访问的方法
Feb 25 PHP
php使用Jpgraph绘制饼状图的方法
Jun 10 PHP
Yii2 RESTful中api的使用及开发实例详解
Jul 06 PHP
微信支付扫码支付php版
Jul 22 PHP
php中照片旋转 (orientation) 问题的正确处理
Feb 16 PHP
PHP中的函数声明与使用详解
May 27 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
Jun 03 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
论建造顺序的重要性
2020/03/04 星际争霸
香妃
2021/03/03 冲泡冲煮
php Memcache 中实现消息队列
2009/11/24 PHP
vs中通过剪切板循环来循环粘贴不同内容
2011/04/30 PHP
PHP Reflection API详解
2015/05/12 PHP
PHP编译安装时常见错误解决办法
2015/05/28 PHP
PHP Swoole异步Redis客户端实现方法示例
2019/10/24 PHP
PHP高并发和大流量解决方案整理
2021/03/09 PHP
javascript仿qq界面的折叠菜单实现代码
2012/12/12 Javascript
jQuery中prevUntil()方法用法实例
2015/01/08 Javascript
jQuery循环动画与获取组件尺寸的方法
2015/02/02 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
AngularJS指令用法详解
2016/11/02 Javascript
利用jQuery.Validate异步验证用户名是否存在(推荐)
2016/12/09 Javascript
canvas滤镜效果实现代码
2017/02/06 Javascript
微信小程序 判断手机号的实现代码
2017/04/19 Javascript
详解Vue 事件驱动和依赖追踪
2017/04/22 Javascript
详解ES6 系列之异步处理实战
2018/10/26 Javascript
JS实现电话号码的字母组合算法示例
2019/02/26 Javascript
深入剖析JavaScript instanceof 运算符
2019/06/14 Javascript
bootstrap table实现iview固定列的效果实例代码详解
2019/09/30 Javascript
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
2014/06/04 Python
理解Python中的With语句
2015/02/02 Python
用Python从零实现贝叶斯分类器的机器学习的教程
2015/03/31 Python
python中Genarator函数用法分析
2015/04/08 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
2020/02/03 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
CSS3的transition和animation的用法实例介绍
2014/08/20 HTML / CSS
白色公司:The White Company
2017/10/11 全球购物
Andrew Marc官网:设计师外套的领先制造商
2019/10/30 全球购物
网上开商店的创业计划书
2014/01/19 职场文书
考察现实表现材料
2014/05/19 职场文书
AJAX学习笔记
2021/05/18 Javascript
分享一些Java的常用工具
2021/06/11 Java/Android
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android
mybatis-plus模糊查询指定字段
2022/04/28 Java/Android