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面向对象的进阶学习(抽像类、接口、final、类常量)
May 07 PHP
php多层数组与对象的转换实例代码
Aug 05 PHP
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
Nov 26 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
Apr 24 PHP
php使用类继承解决代码重复的问题
Feb 11 PHP
php控制文件下载速度的方法
Mar 24 PHP
php 无限级分类 获取顶级分类ID
Mar 13 PHP
yii2使用ajax返回json的实现方法
May 14 PHP
php判断用户是否关注微信公众号
Jul 22 PHP
基于php实现的php代码加密解密类完整实例
Oct 12 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
php 使用mpdf实现指定字段配置字体样式的方法
Jul 29 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
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
PHP直接修改表内容DataGrid功能实现代码
2015/09/24 PHP
php+js实现裁剪任意形状图片
2018/10/31 PHP
JScript内置对象Array中元素的删除方法
2007/03/08 Javascript
Javascript 个人笔记(没有整理,很乱)
2007/07/07 Javascript
js和php如何获取当前url的内容
2013/09/22 Javascript
Jquery中CSS选择器用法分析
2015/02/10 Javascript
jquery读取xml文件实现省市县三级联动的方法
2015/05/29 Javascript
分享经典的JavaScript开发技巧
2015/11/21 Javascript
AngularJS基础 ng-srcset 指令简单示例
2016/08/03 Javascript
Js查找字符串中出现次数最多的字符及个数实例解析
2016/09/05 Javascript
Express URL跳转(重定向)的实现方法
2017/04/07 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
AngularJs 延时器、计时器实例代码
2017/09/16 Javascript
Node之简单的前后端交互(实例讲解)
2017/11/14 Javascript
对mac下nodejs 更新到最新版本的最新方法(推荐)
2018/05/17 NodeJs
react-router4按需加载(踩坑填坑)
2019/01/06 Javascript
详解vue配置后台接口方式
2019/03/29 Javascript
JavaScript实现图片放大镜效果
2019/06/27 Javascript
Vue 自定义指令实现一键 Copy功能
2019/09/16 Javascript
[36:33]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第二场
2018/04/04 DOTA
[01:10:48]完美世界DOTA2联赛PWL S2 GXR vs PXG 第一场 11.18
2020/11/18 DOTA
对python中Json与object转化的方法详解
2018/12/31 Python
完美解决Python matplotlib绘图时汉字显示不正常的问题
2019/01/29 Python
Python面向对象程序设计示例小结
2019/01/30 Python
怎样让char类型的东西转换成int类型
2013/12/09 面试题
秋季运动会加油稿200字
2014/01/11 职场文书
亲子读书活动方案
2014/02/22 职场文书
学习雷锋寄语大全
2014/04/11 职场文书
党的群众路线教育实践活动总结报告
2014/04/28 职场文书
2015年家长学校工作总结
2015/04/22 职场文书
教师学期述职自我鉴定
2019/08/16 职场文书
详解MySQL 用户权限管理
2021/04/20 MySQL
mybatis 解决从列名到属性名的自动映射失败问题
2021/06/30 Java/Android
深入解读Java三大集合之map list set的用法
2021/11/11 Java/Android
Python自动化工具之实现Excel转Markdown表格
2022/04/08 Python