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: | 2024-11-08 03:10:02 |
Package Statistics | |
---|---|
Total Downloads: | 10,992 |
Monthly Downloads: | 0 |
Daily Downloads: | 0 |
Total Stars: | 16 |
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.";
});
});