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实现ping
Oct 09 PHP
第五节--克隆
Nov 16 PHP
php多个字符串替换成同一个的解决方法
Jun 18 PHP
PHP如何利用P3P实现跨域
Aug 24 PHP
php目录操作实例代码
Feb 21 PHP
phpQuery让php处理html代码像jQuery一样方便
Jan 06 PHP
PHP实现算式验证码和汉字验证码实例
Mar 09 PHP
PHP实现根据银行卡号判断银行
Apr 29 PHP
摘自织梦CMS中的图片处理类
Aug 08 PHP
php注册登录系统简化版
Dec 28 PHP
PHP实现多级分类生成树的方法示例
Feb 07 PHP
thinkPHP5项目中实现QQ第三方登录功能
Oct 20 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 实现进制相互转换
2016/04/07 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
PHP实现重载的常用方法实例详解
2017/10/18 PHP
360搜索引擎自动收录php改写方案
2018/04/28 PHP
编写兼容IE和FireFox的脚本
2009/05/18 Javascript
js 数据类型转换总结笔记
2011/01/17 Javascript
基于jquery实现的移入页面上空文本框时,让它变为焦点,移出清除焦点
2011/07/26 Javascript
jQuery实现美观的多级动画效果菜单代码
2015/09/06 Javascript
js密码强度检测
2016/01/07 Javascript
Bootstrap每天必学之警告框插件
2016/04/26 Javascript
AngularJs  unit-testing(单元测试)详解
2016/09/02 Javascript
Angular2.0/4.0 使用Echarts图表的示例代码
2017/12/07 Javascript
浅谈Vue下使用百度地图的简易方法
2018/03/23 Javascript
基于vue和react的spa进行按需加载的实现方法
2018/09/29 Javascript
ionic2.0双击返回键退出应用
2019/09/17 Javascript
在Layui中实现开关按钮的效果实例
2019/09/29 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
在Django的通用视图中处理Context的方法
2015/07/21 Python
对Pycharm创建py文件时自定义头部模板的方法详解
2019/02/12 Python
Django发送邮件功能实例详解
2019/09/02 Python
python模拟预测一下新型冠状病毒肺炎的数据
2020/02/01 Python
python输出pdf文档的实例
2020/02/13 Python
Django 博客实现简单的全文搜索的示例代码
2020/02/17 Python
Keras Convolution1D与Convolution2D区别说明
2020/05/22 Python
keras自动编码器实现系列之卷积自动编码器操作
2020/07/03 Python
Opencv常见图像格式Data Type及代码实例
2020/11/02 Python
python 解决函数返回return的问题
2020/12/05 Python
Cocopanda波兰:购买化妆品、护肤品、护发和香水
2020/05/25 全球购物
商业项目策划方案
2014/06/05 职场文书
2014最新党员批评与自我批评材料
2014/09/24 职场文书
现场施工员岗位职责
2015/04/11 职场文书
巴黎圣母院读书笔记
2015/06/26 职场文书
python3 hdf5文件 遍历代码
2021/05/19 Python
Mysql中存储引擎的区别及比较
2021/06/04 MySQL
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript