TP5 路由使用


 

为什么使用路由

 

1、简化URL访问地址,看起来更加美观。

2、隐藏实际文件路径,这会对安全性带来帮助

 

目前根据需求在工作中,我这边经常使用的到的路由定义方式 主要是 Route::get() 和Route::post() 两种方式 ,另外就是配合 Route::group() 来使用

 

开启路由配置

 

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

 

 

 

首先创建一个Test方法

 

use think\Controller;

class Index extends Controller
{
    public function test()
    {
       echo 'hello';
    }

}

 

配置路由

 

use think\Route;
Route::get('test','index/index/test');

 

访问 域名/test 输出结果

 

hello

 

OK 第一步成功,然后调整路由配置

 

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

 

然后在Test方法中增加如下代码

 

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(1) {
  ["id"] => string(2) "15"
}

array(0) {
}

NULL

array(1) {
  ["id"] => string(2) "15"
}

string(2) "15"

array(1) {
  ["id"] => string(2) "15"
}

string(2) "15"

 

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

 

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

 

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

 

public function hello($id)

 

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

另外如果 在链接后面跟上参数比如  域名/test/10?name=123

 

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

我们测试一下 

dump(input());
dump(request()->get());
dump(request()->route());
dump(request()->param());
array(2) {
  ["name"] => string(6) "wangqy"
  ["id"] => string(2) "15"
}

array(1) {
  ["name"] => string(6) "wangqy"
}

array(1) {
  ["id"] => string(2) "15"
}

array(2) {
  ["name"] => string(6) "wangqy"
  ["id"] => string(2) "15"
}

 

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

 

request()->route()

 

在网页试图内使用路由链接

 

既然定义了路由 ,那么我们也希望在网页中 访问的也是定义后的路由链接,

需要注意的是,这里最好不要直接 给链接赋值为 最后的路由链接,比如在网页中,直接使用

 

<a href="/test">测试链接</a>

 

这样当然也可以达到访问的效果,但不是很规范,比如后续这个路由的名称变更了,那么就需要在网页中变更所有使用了这个路由的链接。

有两种方式解决这个问题:

 

1、在后台代码中 提前构建好这个链接 然后在网页中赋值。

 

$url = url('index/index/test'); 
dump($url); 
string(10) "/test.html"

 

2、在网页中 使用如下代码也能达到同样的效果。

 

<a href="{:url('index/index/test')}">测试链接</a>

 

 

参考链接:https://www.kancloud.cn/manual/thinkphp5/118041

 

 

发布时间 : 2023-02-28,阅读量:1315 , 分类: PHP ThinkPHP
本文链接:https://upwqy.com/details/44.html
TP5 模型类和Db类的使用区别 tp5 提升性能的几个方法