这里可以直接从第四条开始看

原文http://www.upwqy.com/details/12.html

1 文档链接

tp5路由官方文档  https://www.kancloud.cn/manual/thinkphp5/118041

2 为什么要使用路由

对于咱们的pc站来说,如果是在不是用路由的情况下,路径是很长的,看起来就很不友好,

当然啦,具体为什么要使用路由呢,

我考虑的是 第一个可读性和友好性上比较好,第二是我们隐藏了自己项目的实际路径,这会对安全性带来帮助。

这只是我个人的看法。

3 熟悉官方文档

我们要熟悉官方文档  使用的依据肯定是依照文档上来的,我们不可以闭门造车。既然使用tp5就要根据tp5设置的规则来。

4 开启路由配置

// 是否开启路由
'url_route_on' => true,
// 路由使用完整匹配
'route_complete_match' => true, // 是否强制使用路由
'url_route_must' => true,

5 定义路由 并测试获取路由参数和?后的参数

看一下文档中的路由参数 提供了很多方法开快捷定义路由的,

我们这里使用

Route::get() 和Route::post()两种方式来配置路由

在路由文件中声明使用路由

use think\Route;

定义第一个路由 比如

Route::get('hello','index/test/hello');

第一个参数是我们实际需要在链接中要访问的地址 ,第二个参数是实际应用要走的module/controller/action

我们可以在

index/test/hello

对应的hello 方法中 echo ''你好';

访问  域名/hello

可以看到在浏览器上输出

你好

接下来我们修改一下路由

Route::get('hello/:id','index/test/hello');

在hello 方法中

dump(input('get.id'));
dump(input());
dump(request()->get());
dump(request()->get('id'));
dump(request()->param());
dump(request()->param('id'));
dump(request()->route());
dump(request()->route('id'));

返回结果是依次是

null

array (size=1)
'id' => string '10' (length=2) array (size=0)
empty null array (size=1)
'id' => string '10' (length=2) string '10' (length=2) array (size=1)
'id' => string '10' (length=2) string '10' (length=2)

其中

dump(input('get.id'));
dump(request()->get());
dump(request()->get('id'));

这三种获取参数的方式 ,在定义了路由,并且路由中定义了:id 这种变量时 是获取不到参数的

另外下面这种方式可以获取到参数

public function hello($id)

这里输出$id也可以获取到值。但是这里的 $id 必须要和 路由中的 :id 对应 变量必须相同

另外如果 在链接后面跟上参数

比如  域名/hello/10?name=123

使用上面的获取参数的方法 来获取name值 是都可以获取到值的,所以这里我们就需要需要合适的获取参数方法了

我们测试一下

dump(input());
dump(request()->get());
dump(request()->route());
dump(request()->param());
array (size=2)
'name' => string '123' (length=3)
'id' => string '10' (length=2)
array (size=1)
'name' => string '123' (length=3)
array (size=1)
'id' => string '10' (length=2)
array (size=2)
'name' => string '123' (length=3)
'id' => string '10' (length=2)

如果我们只想要自己定义的路由变量 就需要使用

request()->route()

获取参数

还有我们看到其中的

request()->get()

获取的参数只获得了我们 ? 后面的参数 ,并且在上面的没有添加name时是没有获取到参数的

所以路由里面的:id这种变量 我们不能使用

request()->get()

来获得参数

还有强调一下 我们最好不要用能获取?后面参数的方法来获取参数。如果实在是需要获取。我们最好能够准备的指定我们需要获取的参数变量

6 网页上使用路由链接

我们能够定义路由,并实际的访问了 我们看一下 在网页上怎么运用

你可能会说,既然我们定义了路由。那么直接上链接上拼接上链接不就可以了

我想说 这样是万万不好的

比如说我的上面的链接 /hello/:id  在链接上直接输入

这样的。当前这可以访问。但是这样的链接在运营的过程中使用的越来越多 如果哪天看着这个链接不顺眼了。或者说,老板找你,把这个链接改一下。难道你要一个一个的去找去改吗,这样的很麻烦。

既然说到这里了。必然会有解决办法的

我们可以看官方文档。url生成

我们在网页链接上直接按照原来没有定义路由时的思路来 写链接

tp5 生成链接的方式是使用url

{:url('index/test/hello?id='.$v['id'])}//这个是循环数据时拼接变量

//这里直接使用a标签会被解析 所以用汉字代替了
a标签 href="{:url('index/article/details?id=1')}">
我是一个链接
/a标签
打开网页 我们把鼠标放到标题上 可以看到浏览器下方的状态栏上 实际的链接就是我们需要的。域名/hello/1.html

这里在网页上直接生成的链接会带有后缀html 没有这个html也是可以访问的。
现在我的链接是不是我们想要的理想效果了 我们这里改一下路由
Route::get('news/:id','index/test/hello');

刷新页面 是不是链接已经更新了 域名/news/1.html

ok 测试暂时告一段落 这样基本够平时的使用的。以后有发现会及时更新的

TP5 路由使用的更多相关文章

  1. tp5 路由定义

    路由定义 | Route::rule('路由表达式','路由地址','请求类型'); > route 目录下的任何路由定义文件都是有效的,默认的路由定义文件是 route.php > 可以 ...

  2. TP5路由的位置导致错误

    // 测试 '[js]' => [ ':id' => ['test/test/js', ['method' => 'get'], ['id' => '\d+']], ':id/ ...

  3. 【tp5】tp5实现空模块、空控制器、空操作的页面404跳转

    写在最开始:本教程适用于tp5路由的[强制模式+半pathinfo模式+pathinfo模式],通用. 比网上的[通过路由去控制空模块更强力.更全面]. PS:路由控制空模块缺点:仅仅在[强制模式下才 ...

  4. Laradock + tp5 + nginx 配置虚拟机域名始终跳转首页/502报错

    laradock默认配置文件如下: 配置运用于本地windows+phpstudy 部署的laravel项目未出现问题,如下: server { listen ; listen [::]:; serv ...

  5. thinkphp5开发restful-api接口学习 笔记二

    目录 第4节 为api项目搭建数据库 第5节 使用markdown书写接口文档 第6节(判断数据库中是否有此用户) 第7节 为项目配置URL 需求分析 配置主域名和二级域名 使用tp5路由进行URL解 ...

  6. tp5--路由的使用方法(深入)

    懒得写注释,直接上代码 配置文件Route: <?php use think\Route; //tp5路由测试 //动态注册 //Route::rule('路由表达式','路由地址','请求类型 ...

  7. TP5学习基础二:目录结构、URL路由、数据操作

    一.安装1.使用git或者composer(composer update)进行实时更新,区别在于git不会清空核心框架目录而composer会清空.2.使用官网打包好的TP压缩包(解压即可用)-&g ...

  8. thinkphp 5.1/tp5.1 route路由bug

    tp5.1下面RuleItem类中,match方法. 如果同一个控制器下面,写了两个路由,后一个路由比包含前一个路由,则访问后一个路由地址的时候,会跳转到前面定义的那个路由

  9. ThinkPHP5.0框架开发--第4章 TP5.0路由

    ThinkPHP5.0框架开发--第4章 TP5.0路由 第4章 TP5.0 路由 ================================================== 上次复习 1. ...

随机推荐

  1. 在linux内核中修改TCP MSS值

    MTU: Maxitum Transmission Unit 最大传输单元 MSS: Maxitum Segment Size 最大分段大小 MSS最大传输大小的缩写,是TCP协议里面的一个概念.MS ...

  2. 日程管理 FullCalendar

    日程管理,采用著名组件FullCalendar日历插件实现FullCalendar提供了丰富的属性设置和方法调用,开发者可以根据FullCalendar提供的API快速完成一个日历日程的开发1.实现按 ...

  3. 【深度学习系列】用PaddlePaddle进行车牌识别(一)

    小伙伴们,终于到了实战部分了!今天给大家带来的项目是用PaddlePaddle进行车牌识别.车牌识别其实属于比较常见的图像识别的项目了,目前也属于比较成熟的应用,大多数老牌厂家能做到准确率99%+.传 ...

  4. php常用面试知识点

    1.php基础 2.mysql基础 3.js基础 4.jq 5.正则 6.面向对象 7.分页类,购物车类,数据库类,上传类,图片处理类 8.smarty模板技术(以及自己写模板引擎) 9.ajax 1 ...

  5. Ehcache入门基础

    1.ehcache的简介  EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. 2.ehcache入门实例 1.首先先导入 ...

  6. 《android开发艺术探索》读书笔记(九)--四大组件

    接上篇<android开发艺术探索>读书笔记(八)--WindowManager No1: 四大组件除了BroadcastReceiver,其他三种组件都必须在AndroidManifes ...

  7. dfs练习

    不给提示,练习. 题意: 蒜头的数学实在是太差了,于是老师把他关到小黑屋让他闭门修炼.老师跟他一张纸,上面一排写着1, 2, 3...N这N个数,中间用空白分隔.老师让他在空白处填上加号或者减号.他让 ...

  8. nginx新的站点的配置

    每一次配置新的站点的时候,要记得重新启动nginx: sudo -s; nginx -s reload; 配置文件,有涉及到 每一个站点都有一个.conf文件. 域名重定向:Gas Mask的软件的使 ...

  9. 自动化测试 selenium中WebDriver 和WebElement的区别

    之前在做UI自动化测试中 经常会用到  WebDriver  和 WebElement两个类   以前对这两个类总感觉有点傻傻分不清 昨天看了下之前下的代码  结合自己的理解  对着两个类的区别和关系 ...

  10. Linux内核开发之将驱动程序添加到内核

    驱动程序添加到内核 一.概述: 在Linux内核中增加程序需要完成以下三项工作: 1.将编写的源代码复制到Linux内核源代码的相应目录 2.在目录的Kconfig文件中增加新源代码对应项目的编译配置 ...