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生成扭曲及旋转的验证码图片
Jun 07 PHP
在PHP上显示JFreechart画的统计图方法
Nov 03 PHP
php实现12306火车票余票查询和价格查询(12306火车票查询)
Jan 14 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
Jan 07 PHP
PHP导出Excel实例讲解
Jan 24 PHP
Yii2框架实现注册和登录教程
Sep 30 PHP
php变量与数组相互转换的方法(extract与compact)
Dec 02 PHP
详解PHP中的 input属性(隐藏 只读 限制)
Aug 14 PHP
PHP让数组中有相同值的组成新的数组实例
Dec 31 PHP
Laravel框架实现的批量删除功能示例
Jan 16 PHP
PHP实现百度人脸识别
May 06 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
Jul 24 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 SQL Injection with MySQL
2011/02/27 PHP
thinkphp的c方法使用示例
2014/02/24 PHP
神盾加密解密教程(二)PHP 神盾解密
2014/06/08 PHP
Twig模板引擎用法入门教程
2016/01/20 PHP
实现png图片和png背景透明(支持多浏览器)的方法
2009/09/08 Javascript
javascript 图片上一张下一张链接效果代码
2010/03/12 Javascript
js二维数组排序的简单示例代码
2014/01/24 Javascript
容易造成JavaScript内存泄露几个方面
2014/09/04 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
2014/10/17 Javascript
nodejs下打包模块archiver详解
2014/12/03 NodeJs
javascript将异步校验表单改写为同步表单
2015/01/27 Javascript
JavaScript里四舍五入函数round用法实例
2015/04/06 Javascript
JavaScript AOP编程实例
2015/06/16 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
Jquery组件easyUi实现表单验证示例
2016/08/23 Javascript
js eval函数使用,js对象和字符串互转实例
2017/03/06 Javascript
jQuery插件FusionCharts绘制的2D条状图效果【附demo源码】
2017/05/13 jQuery
使用JS和canvas实现gif动图的停止和播放代码
2017/09/01 Javascript
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
jQuery实现的模仿雨滴下落动画效果
2018/12/11 jQuery
vue-父子组件和ref实例详解
2019/11/10 Javascript
jQuery实现点击滚动到指定元素上的方法分析
2020/03/19 jQuery
使用Vant完成Dialog弹框案例
2020/11/11 Javascript
使用Python中PDB模块中的命令来调试Python代码的教程
2015/03/30 Python
Python中用startswith()函数判断字符串开头的教程
2015/04/07 Python
基于scrapy实现的简单蜘蛛采集程序
2015/04/17 Python
Django中模型Model添加JSON类型字段的方法
2015/06/17 Python
Python的requests网络编程包使用教程
2016/07/11 Python
python高阶爬虫实战分析
2018/07/29 Python
python进程的状态、创建及使用方法详解
2019/12/06 Python
python 中值滤波,椒盐去噪,图片增强实例
2019/12/18 Python
python和js交互调用的方法
2020/06/23 Python
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
Joseph官网:英国小众奢侈品牌
2019/05/17 全球购物
出纳年终工作总结2014
2014/12/05 职场文书
Pytest中skip和skipif的具体使用方法
2021/06/30 Python