🛣️ 路由配置

ThinkAdmin 基于 ThinkPHP 6 的多应用平台,提供了灵活的路由管理机制。路由被划分为全局路由和应用路由两大类,满足不同场景的需求。

🚀 路由类型

全局路由

  • 适用于整个系统的路由
  • 监听根路径,如 /my-test.html
  • 在应用 sys.php 文件或插件服务类中注册

应用路由

  • 专注于各个独立的应用模块
  • 按模块进行划分和管理
  • 位于各模块的 route 目录下

📋 路由特点

  • 模块化管理: 每个模块拥有独立的路由配置
  • 灵活配置: 支持多种路由定义方式
  • 自动加载: 系统自动加载并应用路由配置
  • 互不干扰: 不同模块间的路由互不冲突
  • 动态注册: 支持运行时动态注册路由
  • 缓存优化: 支持路由缓存提升性能
  • 中间件支持: 支持路由中间件处理
  • 参数绑定: 支持路由参数自动绑定

全局路由配置

在ThinkAdmin中,全局路由具备监听根路径的能力,如 /my-test.html 等路径,都可通过全局路由进行处理。然而,全局路由的注册并非通过传统的配置文件或路由定义文件实现,而是需要在每个应用的 sys.php 文件或插件服务类中动态完成。

例如,在 admin 应用模块中,开发者可以在 admin/sys.php 文件中编写代码来注册全局路由。同样地,在应用插件的服务类中也可以进行全局路由的注册操作。这种动态注册的方式赋予了开发者更大的灵活性,可以根据应用需求实时调整路由规则,而无需修改框架的核心配置。

通过这一优化,ThinkAdmin 的路由管理更加高效和便捷,能够满足复杂应用场景的需求,提升开发效率和系统性能。同时,也要求开发者对 ThinkPHP6 的路由机制有深入的了解,以便正确地进行路由注册和管理。

<?php
// app/admin/sys.php 或插件 Service.php 中

// 访问入口 index.php
// 访问地址 https://yourdomain.com/demo
// 路由配置 app/admin/sys.php(当然放其他应用目录也是一样的)
app()->route->get('demo', 'myself/test'); // 访问 /demo 映射到 /myself/test

// 也可以使用其他路由方法
app()->route->post('api/user', 'user/api');  // POST 请求
app()->route->any('test', 'test/index');     // 支持所有请求方法
app()->route->group('v1', function() {
    app()->route->get('user', 'user/index');
    app()->route->post('user', 'user/save');
}); // 路由分组

应用路由配置

ThinkAdmin 中,路由的配置和管理是按模块进行划分的,每个模块拥有独立的路由配置,确保了模块间的路由互不干扰,提高了系统的可维护性和扩展性。 具体而言,每个模块的路由配置文件通常位于该模块的 route 目录下,例如 admin/route/demo.php。当系统启动时,会自动加载并应用这些路由配置文件。这意味着在应用模块或应用插件的 route 目录下的所有PHP文件都会被解析并生效,从而实现对应模块的路由功能。

这种按模块配置路由的方式,使得开发者可以更加清晰地组织和管理路由规则,避免了路由规则的混乱和冲突。同时,也使得不同模块之间的路由可以独立进化,互不干扰,提高了系统的灵活性和可定制性。 通过这一优化,ThinkAdmin 的路由管理更加规范化和模块化,为开发者提供了更加清晰和便捷的路由配置方式,提升了开发效率和系统性能。

<?php
// app/admin/route/demo.php

// 访问入口 index.php
// 访问地址 https://yourdomain.com/admin/demo
// 路由配置 app/admin/route/demo.php
app()->route->get('demo', 'test'); // 访问 /admin/demo 映射到 /admin/test

// 访问入口 index.php
// 访问地址 https://yourdomain.com/admin/demo2
// 路由配置 app/admin/route/demo.php
app()->route->any('demo2', 'user/index'); // 访问 /admin/demo2 映射到 /admin/user/index

// 也可以返回数组方式定义路由
return [
    'demo' => 'test',
    'demo2' => 'user/index',
];

应用绑定路由

做应用绑定,可以去除模块名称,如入口为 admin.php,自动绑定应用为 admin

<?php
// app/admin/route/demo.php

// 访问入口 admin.php(绑定 admin 应用)
// 访问地址 https://yourdomain.com/demo(不需要 /admin 前缀)
// 路由配置 app/admin/route/demo.php
app()->route->get('demo', 'test'); // 访问 /demo 映射到 /admin/test

默认应用路由

由于多应用模式,默认绑定应用 index

<?php
// app/index/route/demo.php

// 访问入口 index.php
// 访问地址 https://yourdomain.com/demo
// 路由配置 app/index/route/demo.php
app()->route->get('demo', 'test'); // 访问 /demo 映射到 /index/test

路由定义方式

app()->route 只是一种调用方式,也可以用 return 返回数组:

<?php
// app/admin/route/api.php

// 方式1:使用 app()->route 方法
app()->route->get('user', 'user/index');
app()->route->post('user', 'user/save');

// 方式2:返回数组(推荐,更简洁)
return [
    'user' => 'user/index',        // GET 请求
    'user' => ['user/save', 'post'], // POST 请求
    'user/:id' => 'user/detail',   // 带参数路由
];
最近更新:
Contributors: 邹景立, Anyon