fremail/lumen-nested-route-groups

扩展 Lumen 应用以使用嵌套路由组。除了分组外,还可以使用 any() 和 match() 方法。

1.1.0 2016-11-12 21:21 UTC

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 风格)。

使用完整命名空间步骤

  1. 如果您在项目根目录中没有创建 config 目录,请创建一个。

  2. NestedRouteGroups.phpvendor/fremail/lumen-nested-route-groups/config 文件夹复制到创建的根目录中的 config 目录。

  3. 打开 config/NestedRouteGroups.php 文件,并将 'namespace' 值设置为 'full'。

  4. 将此行添加到您的 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.";
    });

});