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网站在线人数统计
Apr 09 PHP
第七章 php自定义函数实现代码
Dec 30 PHP
探讨PHP使用eAccelerator的API开发详解
Jun 09 PHP
thinkphp的c方法使用示例
Feb 24 PHP
php中的观察者模式简单实例
Jan 20 PHP
PHP文件上传之多文件上传的实现思路
Jan 27 PHP
PHP解压ZIP文件到指定文件夹的方法
Nov 17 PHP
PHP多个图片压缩成ZIP的方法
Aug 18 PHP
PHP微信支付结果通知与回调策略分析
Jan 10 PHP
php获取微信openid方法总结
Oct 10 PHP
Laravel框架Eloquent ORM删除数据操作示例
Dec 03 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
Apr 23 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时间不正确的解决方法
2008/04/09 PHP
PHP strip_tags保留多个HTML标签的方法
2016/05/22 PHP
用js遍历 table的脚本
2008/07/23 Javascript
基于JQuery的cookie插件
2010/04/07 Javascript
关于文本框的一些限制控制总结~~
2010/04/15 Javascript
jQuery元素选择器用法实例
2014/12/23 Javascript
jQuery应用之jQuery链用法实例
2015/01/19 Javascript
JQuery异步获取返回值中文乱码的解决方法
2015/01/29 Javascript
javascript实现获取服务器时间
2015/05/19 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
2015/08/12 Javascript
jquery彩色投票进度条简单实例演示
2020/07/23 Javascript
jQuery+css实现的换页标签栏效果
2016/01/27 Javascript
解析如何利用iframe标签以及js制作时钟
2016/12/08 Javascript
详解nodejs 文本操作模块-fs模块(二)
2016/12/22 NodeJs
简单实现bootstrap选项卡效果
2017/02/08 Javascript
element-ui使用导航栏跳转路由的用法详解
2018/08/22 Javascript
详解Vue中watch的详细用法
2018/11/28 Javascript
JS基于对象的链表实现与使用方法示例
2019/01/31 Javascript
微信小程序访问豆瓣电影api的实现方法
2019/03/31 Javascript
javascript实现fetch请求返回的统一拦截
2019/12/22 Javascript
微信小程序连接服务器展示MQTT数据信息的实现
2020/07/14 Javascript
Python面向对象编程中的类和对象学习教程
2015/03/30 Python
举例简单讲解Python中的数据存储模块shelve的用法
2016/03/03 Python
Python设计模式之简单工厂模式实例详解
2019/01/22 Python
Python OpenCV图像指定区域裁剪的实现
2019/10/30 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
python中元组的用法整理
2020/06/15 Python
任意一块网页内容实现“活”的背景(目前火狐浏览器专有)
2014/05/07 HTML / CSS
CSS3 分类菜单效果
2019/05/27 HTML / CSS
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
美国户外服装和装备购物网站:Outland USA
2020/03/22 全球购物
适用于所有创业者的创业计划书
2014/02/05 职场文书
《陈毅探母》教学反思
2014/05/01 职场文书
简洁的英文求职信范文
2014/05/03 职场文书
歌颂祖国演讲稿
2014/05/04 职场文书
Java 深入探究讲解简单工厂模式
2022/04/07 Java/Android