ThinkPHP 路由使用

最近在使用ThinkPHP6做项目的开发,故整理了一些常用的路由使用方式,

可以方便之后的使用。

目录

引用路由门面

基础路由

快捷路由

规则表达式

静态地址

静态结合动态地址

方法设置

完全匹配

默认路由规则

设置完全匹配

路由别名

变量规则

局部变量规则

全局变量规则

重定向路由

路由到模板

强制路由


引用路由门面

use think\facade\Route;

基础路由

Route::rule('路由表达式', '路由地址', '请求类型');

所有请求类型皆可访问

Route::rule('user', 'User/index');

只能get访问

Route::rule('user', 'User/index', 'GET');

get/post都能访问

Route::rule('user', 'User/index', 'GET|POST');

注意:请求类型参数不区分大小写

快捷路由

Route::快捷方法名('路由表达式', '路由地址');

类型

描述

快捷方法

GET

GET请求

get

POST

POST请求

post

PUT

PUT请求

put

DELETE

DELETE请求

delete

PATCH

PATCH请求

patch

HEAD

HEAD请求

head (V6.0.13+)

*

任何请求类型

any

示例如下:

Route::get('user','User/index');
Route::post('user','User/index');
Route::put('user','User/index');
Route::delete('user','User/index');
Route::any('user/detail','User/detail');

规则表达式

静态地址

Route::get('user', 'User/index');

静态结合动态地址

Route::get('user/detail/:name', 'User/detail');

Route::get('user/:name/:gender', 'User/test');

方法设置

public function detail($name = 'ThinkPHP6')
{
    return 'hello, This is ' . $name . ' detail page!';
}

public function test($name, $gender)
{
    echo $name;
    echo '<br/>';
    echo $gender;
}

完全匹配

默认路由规则

Route::get('user', 'User/index'); 

默认路由规则不要求全部匹配,则下面两种都可访问

(1)http://serverName/user

(2)http://serverName/user/2

设置完全匹配

Route::get('user$', 'User/index');

之后只能路由(1)访问

路由别名

给路由设置别名,注意要确保全局唯一

例如:

Route::get('user/detail/:name', 'User/detail')->name('detail');

控制器或视图生成地址时可以:

url('detail', ['name' => 'ThinkPHP6']);

默认生成地址:

url('user/detail', ['name' => 'ThinkPHP6']);

变量规则

局部变量规则

仅在当前路由有效:

// 匹配字母、数字、中文和下划线字符
Route::get('user/detail/:name', 'User/detail')->pattern(['name' => '[\w]+']);
// 匹配数字
Route::get('user/delete/:id', 'User/delete')->pattern(['name' => '[\d]+']);

全局变量规则

// 批量匹配设置
Route::pattern(['name' => '\w+', 'id'   => '\d+',]);
Route::get('user/detail/:name', 'User/detail');
Route::get('user/delete/:id', 'User/delete');

重定向路由

Route::redirect('user/delete/:id', url('user/detail', ['name' => 'ThinkPHP6']), 302);

路由到模板

// 没有模板变量
Route::view('user/detail', 'user/index');
// 传递模板变量
Route::view('user/detail', 'user/index', ['name' => '张三']);
// 动态路由+模板变量
Route::view('user/:name', 'user/index', ['name' => '张三']);

强制路由

为防止设置路由不生效,可以修改config/route.php

开启全局强制路由、路由完全匹配选项

开启全局完全匹配后,如果需要对某个路由关闭完全匹配,可以使用

Route::get('user/detail/:name', 'User/detail')->completeMatch(false);

在这里只是列举了一些常用的路由类型和参数设置,实际上还有很多,有兴趣的话可以了解一下。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JSON_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值