为什么使用路由
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