6

我已经在 laravel/lumen 中声明了一个路由组,如下所示:

$app->group(['middleware' => 'auth'], function () use ($app) {
    $app->get('/details', 'UserController@details');
});

路由文件 web.php 的所有内容都是这样的:

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It is a breeze. Simply tell Lumen the URIs it should respond to
| and give it the Closure to call when that URI is requested.
|
*/

$app = app();

$router->get('/', function () use ($router) {
    return $router->app->version();
});


$app->group(['middleware' => 'auth'], function () use ($app) {
    $app->get('/details', 'UserController@details');
});

在拨打http://THE_URL/

我收到一个错误Call to undefined method Laravel\Lumen\Application::group()

错误

如何使用中间件添加路由组?

4

3 回答 3

5

实际上,正如@Aine 在 Lumen 5.5+ 中所说,您应该更改:

LumenPassport::routes($this->app);

LumenPassport::routes($this->app->router);

应用程序没有group()方法了。

谢谢

于 2018-11-22T17:57:04.440 回答
4

我刚刚遇到了同样的问题,将 Lumen 从 5.4 升级到 5.5

docs中,它指出:

更新路由文件

更新您的 bootstrap/app.php 文件后,您应该更新您的 routes/web.php 文件以使用 $router 变量而不是 $app 变量:

$router->get('/hello', function () { return 'Hello World'; });

对我来说,这意味着在路由中使用过 $app 的地方进行了大量更新。

$app->get()                     => $router->get()
$app->group()                   => $router->group()
$app->post()/patch()/delete()   => $router->post()/patch()/delete()

// Inside functions    
$app->group([...], function () use ($app)
=>
$router->group([...], function () use ($router)

// And even in some other files
$app = app();
$app->get();
    =>
$app = app();
$router = $app->router;
$router->get();

希望这可以帮助。

于 2018-08-01T10:52:44.367 回答
1

找到了问题的解决方案:

<?php

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It is a breeze. Simply tell Lumen the URIs it should respond to
| and give it the Closure to call when that URI is requested.
|
*/

$router->group(['prefix' => 'api'], function () use ($router) {
    $router->get('/', function () use ($router) {
        return "API";
    });

    $router->post('/signin','UserController@signin');
    $router->post('/signup','UserController@signup');

    $router->group(['middleware' => 'auth'], function () use ($router) {
        $router->get('/details', 'UserController@details');
    });
});

为了对路线进行分组,我们必须使用:

$router->group(['middleware' => 'auth'], function () use ($router) {
        $router->get('/details', 'UserController@details');
});
于 2017-09-21T17:57:25.953 回答