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写的采集程序
Mar 16 PHP
Php Cookie的一个使用注意点
Nov 08 PHP
PHP strtotime函数详解
Dec 18 PHP
thinkphp 多表 事务详解
Jun 17 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
Apr 10 PHP
2个Codeigniter文件批量上传控制器写法例子
Jul 25 PHP
PHP函数extension_loaded()用法实例
Jan 19 PHP
php session实现多级目录存放实现代码
Feb 03 PHP
Symfony2中被遗弃的getRequest()方法分析
Mar 17 PHP
php compact 通过变量创建数组
Nov 15 PHP
PHP中error_reporting函数用法详细介绍
Jun 11 PHP
PHP实现的抓取小说网站内容功能示例
Jun 27 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
dedecms模版制作使用方法
2007/04/03 PHP
一些使用频率比较高的php函数
2008/10/03 PHP
PHP采集静态页面并把页面css,img,js保存的方法
2014/12/23 PHP
PHP数组和explode函数示例总结
2015/05/08 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
2020/04/23 PHP
My Desktop :) 桌面式代码
2008/12/29 Javascript
javascript中字符串拼接详解
2014/09/26 Javascript
node.js中格式化数字增加千位符的几种方法
2015/07/03 Javascript
基于jquery实现下拉框美化特效
2016/02/02 Javascript
Bootstrap警告框(Alert)插件使用方法
2017/03/21 Javascript
微信小程序三级联动选择器使用方法
2020/05/19 Javascript
详解Vue-cli webpack移动端自动化构建rem问题
2018/04/07 Javascript
layui 实现表单和文件上传一起传到后台的例子
2019/09/16 Javascript
[05:39]2014DOTA2国际邀请赛 DK晋级胜者组专访战队国士无双
2014/07/14 DOTA
[02:40]2018年度DOTA2最佳新人-完美盛典
2018/12/16 DOTA
python 运算符 供重载参考
2009/06/11 Python
python读取excel表格生成erlang数据
2017/08/26 Python
对Tensorflow中的矩阵运算函数详解
2018/07/27 Python
一篇文章搞懂Python的类与对象名称空间
2018/12/10 Python
如何利用Python识别图片中的文字
2020/05/31 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
利用CSS3实现进度条的两种姿势详解
2017/03/21 HTML / CSS
css3实现简单的白云飘动背景特效
2020/10/28 HTML / CSS
菲律宾旅游网站:Expedia菲律宾
2017/10/11 全球购物
什么是动态端口(Dynamic Ports)?动态端口的范围是多少?
2014/12/12 面试题
你经历的项目中的SCM配置项主要有哪些?什么是配置项?
2013/11/04 面试题
行政人事岗位职责
2014/03/17 职场文书
护士自我鉴定总结
2014/03/24 职场文书
请假条标准格式规范
2014/04/10 职场文书
给校长的建议书200字
2014/05/16 职场文书
2014年城市管理工作总结
2014/12/02 职场文书
2014年电厂工作总结
2014/12/04 职场文书
关于分班的感言
2015/08/04 职场文书
redis内存空间效率问题的深入探究
2021/05/17 Redis
python周期任务调度工具Schedule使用详解
2021/11/23 Python
Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)
2022/01/18 Java/Android