fremail / lumen-nested-route-groups
扩展 Lumen 应用以使用嵌套路由组。除了分组外,还可以使用 any() 和 match() 方法。
Requires
- php: >=5.5.9
- laravel/lumen-framework: 5.*
This package is auto-updated.
Last update: 2024-09-29 03:57:52 UTC
README
版本 1.1.0 添加 $app->any() 和 $app->match() 方法(无破坏性更改)
Lumen 嵌套路由组
扩展 Lumen 应用以使用嵌套路由组。由于 Lumen 在 bootstrap/app.php 中已经使用了一个分组,因此在 app/Http/routes.php 中无法使用另一个分组。此库移除了这个限制。
安装步骤
1. 使用 Composer 安装
composer require "fremail/lumen-nested-route-groups:~1.1"
2. 在 bootstrap/app.php 中进行必要的更改
将 Lumen 应用程序类的初始化更改为在 bootstrap/app.php 中初始化 Lumen Nested Route Groups 应用程序类。
之前
$app = new Laravel\Lumen\Application(
realpath(__DIR__.'/../')
);
之后
$app = new Fremail\NestedRouteGroups\Application(
realpath(__DIR__.'/../')
);
完成这些简单的步骤后,您就可以在您的应用程序中使用嵌套路由组了!
额外的命名空间配置
默认情况下,此库使用嵌套命名空间(Laravel 风格),但您可以选择使用完整命名空间(Lumen 风格)。
使用完整命名空间步骤
-
如果您在项目根目录中没有创建 config 目录,请创建一个。
-
将
NestedRouteGroups.php
从vendor/fremail/lumen-nested-route-groups/config
文件夹复制到创建的根目录中的 config 目录。 -
打开
config/NestedRouteGroups.php
文件,并将 'namespace' 值设置为 'full'。 -
将此行添加到您的 bootstrap/app.php 中:
$app->configure('NestedRouteGroups');
Any() 和 Match() 方法
你喜欢 Laravel 中的 any()
和 match()
方法吗?我非常喜欢它们!这就是为什么我添加了对 Lumen 的支持。语法与 Laravel 相同。
$app->match($methods, $uri, $action);
其中 $methods - 方法数组。例如:['get', 'post', 'delete']
。 $uri 和 $action 与其他方法相同
$app->any($uri, $action);
在这里,$uri 和 $method 与其他方法(如 $app->get(...)
等)相同。
此库使用示例
这是 app/Http/routes.php 的一个示例
$app->group(['middleware' => 'auth'], function () use ($app) {
$app->get('test', function () {
echo "Hello world!";
});
$app->group(['prefix' => 'user'], function () use ($app) {
$app->get('{id}', 'UserController@show');
$app->post('/', 'UserController@store');
$app->delete('{id}', 'UserController@destroy');
});
/**
* only admins
*/
$app->group(['middleware' => 'admin'], function () use ($app) {
$app->group(['prefix' => 'admin'], function () use ($app) {
$app->get('/', 'AdminController@index');
});
});
/**
* $app->any and $app->match available from v1.1.0
*/
$app->any('/', function () use ($app) {
echo "Hey! I don't care it's POST, GET, PATCH or another method. I'll answer on any of them :)";
});
$app->match(['PATCH', 'PUT', 'DELETE'], '/old/', function () use ($app) {
echo "This is an old part of our site without supporting REST. Please use only GET and POST here.";
});
});