公共品 / 常规
Laravel 的基于类的路由
Requires
- php: ^8.1
Requires (Dev)
- orchestra/testbench: ^7.6
- pestphp/pest: ^1.21
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-19 14:31:50 UTC
README
这是 Laravel 基于类的路由的一个非常基础的解决方案。它非常简单,可能需要大量的工作。我只为自己编写了这个,并不是真正打算让更广泛的世界使用。
我不打算为这个包提供很多支持,并且可能只在我需要的时候更新它。甚至我不确定我会继续使用它。这更像是一个实验。
但是如果你真的想使用它,那么尽可以安装它,使用 Composer
composer require thepublicgood/routine
安装后,使用以下命令发布配置文件
php ./artisan vendor:publish --provider="TPG\Routine\RoutineServiceProvider"
这将把一个 routine.php 文件放置在你的配置目录中。现在创建一个新的空类,并扩展 TPG\Routine\RouteRegistrar 类。创建新的方法,这些方法的名称以前缀 map 开头,以 Routes 结尾。Routine 将调用每个方法并映射定义的路线。
每个 map 方法必须接受一个 Illuminate\Routing\Router 的实例
use App\Http\Controllers\SessionController; use Illuminuate\Routing\Router; use TPG\Routine\RouteRegistrar; class AuthRoutes extends RouteRegistrar { protected function mapWebRoutes(Router $router): void { $router->middleware(['guest'])->group(function (Router $router) { $router->get('/login', [SessionController::class, 'create'])->name('login'); $router->post('/login', [SessionController::class, 'store']); }); $router->middleware(['auth'])->post('/logout', [SessionController:class, 'destroy'])->name('logout'); } }
默认情况下,Routine 将根据方法名称设置默认中间件。你可以在 routine.php 配置文件中找到这些默认值。例如,方法 mapWebRoutes 将自动使用设置为 web 默认的中间件。方法 mapApiRoutes 将自动使用设置为 api 默认的中间件。这意味着你可以创建一个名为 ajax 的默认值,例如,方法 mapAjaxRoutes 将自动设置这些中间件。
中间件合约
此外,为整个路由文件应用中间件可能很有用。例如,如果你需要指定一组路由需要身份验证。你可以通过实现 TPG\Routing\Contracts\RequiresAuthentication 接口来完成此操作
use Illuminuate\Routing\Router; use TPG\Routine\Contracts\RequiresAuthentication; use TPG\Routine\RouteRegistrar; class DashboardRoutes extends RouteRegistrar implements RequiresAuthentication { // ... }
Routine 默认包含 RequiresAuthentication、RequiresSanctumAuthentication 和 SignedRoute 合约。如果你添加了自己的,请确保将它们添加到 routine.php 配置文件中。