Route Group in Lumen error Call to undefined method Laravel\Lumen\Application::group()

12,129

Solution 1

Actually as @Aine said in Lumen 5.5+ you should change:

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

to

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

Application does not have group() method anymore.

thanks

Solution 2

I just ran into the same problem, with upgrading Lumen from 5.4 to 5.5

In the docs, it states:

Updating The Routes File

After updating your bootstrap/app.php file, you should update your routes/web.php file to use the $router variable instead of the $app variable:

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

For me, this meant lots of updating, where ever $app was used in the routing.

$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();

Hope this helps.

Solution 3

Found the solution to the problem:

<?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');
    });
});

In order to group routs we have to use:

$router->group(['middleware' => 'auth'], function () use ($router) {
        $router->get('/details', 'UserController@details');
});
Share:
12,129
Shakti Phartiyal
Author by

Shakti Phartiyal

Updated on June 25, 2022

Comments

  • Shakti Phartiyal
    Shakti Phartiyal almost 2 years

    I have declared a route group in laravel/lumen like so:

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

    all contents of route file web.php are like so:

    /*
    |--------------------------------------------------------------------------
    | 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');
    });
    

    on making a call to http://THE_URL/

    I get an error Call to undefined method Laravel\Lumen\Application::group()

    ERROR

    How do I add route group with a middleware ?

  • Shakti Phartiyal
    Shakti Phartiyal over 6 years
    @MarceloRodovalho What problem are you facing ?
  • Shakti Phartiyal
    Shakti Phartiyal almost 6 years
    I was actually facing the issue on Lumen and not Laravel.
  • Aine
    Aine almost 6 years
    Me too :). I just updated my answer to say Lumen instead of Laravel. Thanks.