| Package Data | |
|---|---|
| Maintainer Username: | fremail |
| Maintainer Contact: | fremail@yandex.com (Anton Demushkin) |
| Package Create Date: | 2015-08-28 |
| Package Last Update: | 2016-11-12 |
| Language: | PHP |
| License: | MIT |
| Last Refreshed: | 2025-11-03 15:07:29 |
| Package Statistics | |
|---|---|
| Total Downloads: | 11,008 |
| Monthly Downloads: | 2 |
| Daily Downloads: | 1 |
| Total Stars: | 15 |
| Total Watchers: | 2 |
| Total Forks: | 7 |
| Total Open Issues: | 0 |
v.1.1.0 Add $app->any() and $app->match() methods (no breaking changes)
Extends a lumen application for using nested route groups. Lumen already uses a group in bootstrap/app.php, that is why you can't use another groups in app/Http/routes.php. This lib removes the restriction.
composer require "fremail/lumen-nested-route-groups:~1.1"
Change initialization of Lumen Application class to initialization of Lumen Nested Route Groups Application class in bootstrap/app.php.
Before:
$app = new Laravel\Lumen\Application(
realpath(__DIR__.'/../')
);
After:
$app = new Fremail\NestedRouteGroups\Application(
realpath(__DIR__.'/../')
);
By default this lib uses nested namespace (Laravel style), but you can determine to use full namespaces instead (Lumen style).
Steps for using full namespaces:
Create config directory if you don't have one in the project root.
Copy NestedRouteGroups.php from vendor/fremail/lumen-nested-route-groups/config folder to the created config dir in the root.
Open the config/NestedRouteGroups.php file and set 'namespace' value to 'full'.
Add this line to your bootstrap/app.php: $app->configure('NestedRouteGroups');
Do you like any() and match() methods on Laravel? I love them! That's why I added supporting them on Lumen.
The syntax is the same as for Laravel:
$app->match($methods, $uri, $action);
Where
$methods - an array of methods. Example: ['get', 'post', 'delete']. $uri and $action are the same as on other methods
$app->any($uri, $action);
Here are $uri and $method are the same as on other methods like $app->get(...) etc.
This is an example of 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.";
});
});