模板 自定义view文件夹 中间件 路由和路由函数 自定义多个route文件 session无效 自定义多个公共函数 中间件别名和数据库连接 伪静态 自定义类库extends 以年月日+编号拼接id,且编号每天从0开始 跨域 宝塔面板新建网站403 网页包含过多重定向 缓存 路由绑定子域名 方法参数错误 php导出excel时身份证变成科学技术法 获取路由参数 生成二维码phpqrcode 使用腾讯OCR(扫描) thinkphp6微信支付回调不访问 查询构造器 导入导出excel:安装使用 导入导出Excel:按日期导出 tp6腾讯云短信 thinkphp unserialize(): Error chinese-calendar 将base64保存到本地

路由和路由函数

首页 > PHP > Thinkphp6 更新日期:2021-04-20 15:32:02

前言

thinkphp6的路由,和laravel有点像,但私以为thinkphp6的更人性化,符合国人的使用习惯。

路由

/admin,是访问地址,参数二,则是控制器的完整路径,@后面是方法。

Route::get('/admin', 'app\Controller\Admin\TaskList@Index');

传参

:id,即是预设一个名为id的参数,访问/admin时,不传入:id会报错。

Route::get('/admin/:id', 'app\Controller\Admin\TaskList@Index');

而在控制器里的使用,则和laravel一样:

function demo ($id) { 
    echo $id; 
}

不定参

如果给路由器设置参数,则访问该链接时,不传出参数会报错。

因此,可以设置不定参,也即是可选参数。使用[]设置,如:

Route::get('/admin/[:id]', 'app\Controller\Admin\TaskList@Index');

然后控制器中,给参数设置一个默认值,比如:

public function Index($id = ''){    ……}

分组 group()和prefix()

使用group()进行地址分组,使用prefix()进行控制器分组。

这里和laravel有点区别,具体到控制器的文件名之后,需要以/结尾。

使用group和prefix之后,在group的参数二里边,再写路由,就不需要重复写/admin和app\Controller\Admin\TaskList了。

Route::group('/admin', function(){        
    Route::get('/', 'Index');
})->prefix('app\Controller\Admin\TaskList/');

ext()

一个很有趣的方法,设置后,如果地址有参数,则参数必须以.xxx结尾,可以是html,也可以是aspx或者jsp。

Route::get('/admin', 'app\Controller\Admin\TaskList@Index')->ext('html');


标题导航