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邮件专题
Oct 09 PHP
如何使用PHP往windows中添加用户
Dec 06 PHP
How do I change MySQL timezone?
Mar 26 PHP
php 上传功能实例代码
Apr 13 PHP
PHP支持多种格式图片上传(支持jpg、png、gif)
Nov 03 PHP
PHP图片处理类 phpThumb参数用法介绍
Mar 11 PHP
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
Mar 27 PHP
php获取通过http协议post提交过来xml数据及解析xml
Dec 16 PHP
php简单创建zip压缩文件的方法
Apr 30 PHP
PHP基于新浪IP库获取IP详细地址的方法
May 04 PHP
PHP的mysqli_set_charset()函数讲解
Jan 23 PHP
设定php简写功能的方法
Nov 28 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
一个odbc连mssql分页的类
2006/10/09 PHP
PHP+APACHE实现用户论证的方法
2006/10/09 PHP
php获取新浪微博数据API实例
2013/11/12 PHP
PHP加Nginx实现动态裁剪图片方案
2014/03/10 PHP
yii框架表单模型使用及以数组形式提交表单数据示例
2014/04/30 PHP
Thinkphp使用mongodb数据库实现多条件查询方法
2014/06/26 PHP
php使用post数组的键值创建同名变量并赋值的方法
2015/04/03 PHP
laravel清除视图缓存的代码
2019/10/23 PHP
PHP判断当前使用的是什么浏览器(推荐)
2019/10/27 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
读jQuery之八 包装事件对象
2011/06/21 Javascript
js禁止document element对象选中文本实现代码
2013/03/21 Javascript
angular.js分页代码的实例
2016/07/27 Javascript
jQuery基本筛选选择器实例代码
2017/02/06 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
2017/03/09 Javascript
easyui-datagrid特殊字符不能显示的处理方法
2017/04/12 Javascript
基于webpack4+vue-cli3项目实现换肤功能
2019/07/17 Javascript
Vue + Element UI图片上传控件使用详解
2019/08/20 Javascript
vue实现购物车结算功能
2020/06/18 Javascript
Python使用百度API上传文件到百度网盘代码分享
2014/11/08 Python
Python内置函数——__import__ 的使用方法
2017/11/24 Python
基于Python安装pyecharts所遇的问题及解决方法
2019/08/12 Python
Django Docker容器化部署之Django-Docker本地部署
2019/10/09 Python
Python命令行click参数用法解析
2019/12/19 Python
Python 中的pygame安装与配置教程详解
2020/02/10 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
2020/04/26 Python
详解如何使用Pytest进行自动化测试
2021/01/14 Python
详解HTML5 Canvas绘制时指定颜色与透明度的方法
2016/03/25 HTML / CSS
德国高尔夫商店:Par71.de
2020/11/29 全球购物
Java里面StringBuilder和StringBuffer有什么区别
2016/06/06 面试题
工程造价专业求职信
2014/07/17 职场文书
2014年药剂科工作总结
2014/11/26 职场文书
上班迟到检讨书
2015/05/06 职场文书
开学典礼致辞
2015/07/29 职场文书
详解Apache SkyWalking 告警配置指南
2021/04/22 Servers
mysql 联合索引生效的条件及索引失效的条件
2021/11/20 MySQL