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 allow_url_include的应用和解释
Apr 22 PHP
php去掉字符串的最后一个字符附substr()的用法
Mar 23 PHP
Notice: Trying to get property of non-object problem(PHP)解决办法
Mar 11 PHP
PHP设计模式之调解者模式的深入解析
Jun 13 PHP
深入PHP5中的魔术方法详解
Jun 17 PHP
PHP文件读写操作相关函数总结
Nov 18 PHP
使用PHP实现下载CSS文件中的图片
Dec 06 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
Jan 09 PHP
PHP进程通信基础之信号量与共享内存通信
Feb 19 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
Apr 10 PHP
Laravel框架实现的使用smtp发送邮件功能示例
Mar 12 PHP
ThinkPHP5与单元测试PHPUnit使用详解
Feb 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中time()和mktime()方法的区别
2013/09/28 PHP
thinkphp使用phpmailer发送邮件的方法
2014/11/24 PHP
PHP中error_log()函数的使用方法
2015/01/20 PHP
jquery提升性能最佳实践小结
2010/12/06 Javascript
JavaScript实现GriwView单列全选(自写代码)
2013/05/13 Javascript
jQuery客户端分页实例代码
2013/11/18 Javascript
Jquery遍历节点的方法小集
2014/01/22 Javascript
JS动态修改图片的URL(src)的方法
2015/04/01 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
AngularJS基础 ng-href 指令用法
2016/08/01 Javascript
JavaScript队列的应用实例详解【经典数据结构】
2017/04/12 Javascript
微信小程序 本地图片按照屏幕尺寸处理
2017/08/04 Javascript
详解vue mint-ui源码解析之loadmore组件
2017/10/11 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
2018/05/08 Javascript
Vue 中对图片地址进行拼接的方法
2018/09/03 Javascript
vue router带参数页面刷新或回退参数消失的解决方法
2019/02/27 Javascript
了不起的11个JavaScript代码重构最佳实践小结
2021/01/11 Javascript
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
python正常时间和unix时间戳相互转换的方法
2015/04/23 Python
说一说Python logging
2016/04/15 Python
Python设计模式之工厂模式简单示例
2018/01/09 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
2018/11/14 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
pycharm 关闭search everywhere的解决操作
2021/01/15 Python
联想瑞士官方网站:Lenovo Switzerland
2017/11/19 全球购物
加拿大领先的冒险和户外零售商:Atmosphere
2017/12/19 全球购物
斯图尔特·韦茨曼鞋加拿大官网:Stuart Weitzman加拿大
2019/10/13 全球购物
软件工程师岗位职责
2013/11/16 职场文书
农村婚礼证婚词
2014/01/08 职场文书
幼儿园教师获奖感言
2014/03/11 职场文书
环保倡议书范文
2014/05/12 职场文书
网站推广策划方案
2014/06/04 职场文书
国际贸易专业自荐信
2014/06/10 职场文书
数学教师个人工作总结
2015/02/06 职场文书
小学见习报告
2015/06/23 职场文书
CSS SandBox应用场景及常见问题
2022/06/25 HTML / CSS