Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/grummfy/laravel-route-controller
Define Router::controller() without breaking everything
https://github.com/grummfy/laravel-route-controller
Last synced: about 1 month ago
JSON representation
Define Router::controller() without breaking everything
- Host: GitHub
- URL: https://github.com/grummfy/laravel-route-controller
- Owner: Grummfy
- License: mit
- Created: 2018-02-06T09:25:30.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2018-02-06T10:15:31.000Z (almost 7 years ago)
- Last Synced: 2024-05-01T19:23:28.011Z (7 months ago)
- Language: PHP
- Size: 6.84 KB
- Stars: 2
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Laravel route controller
This library like other existing, give a way to deal with `Router::controller`.
The key features:
* allow caching of route
* doesn't require extra manipulation
* allow inheritance of route group
* namespace independentCompatible with laravel 5.5. (probably compatible with older version too).
## Install
Install the dependencies
```
composer require grummfy/laravel-route-controller
```Publish the configuration
```
php artisan vendor:publish --tag=config --provider=Grummfy\LaravelRouteController\RouteControllerProvider
```## Usage
Once the package is install and autodiscover (or you have added the provider manually), the package is ready to use.
In your route file, just do this:
```
Route::controller('/foo', \App\Http\Controllers\FooController::class);
```
It will take all the public method from the class (including traits) and convert it to route.There is a third argument that you can use to add extra option, like a middleware or anything else.
```
Route::controller('/foo', \App\Http\Controllers\FooController::class, ['middleware' => 'can:baz']);
```You got also an extra option, to don't allow heritance of methods from parent:
```
Route::controller('/foo', \App\Http\Controllers\FooController::class, ['middleware' => 'can:baz', 'heritage' => false]);
```### Example
Imagine that we have the class FooController (see [example](example/FooController.php)), in this case we will have a series of method that will be converted to routes:
* index() -> /foo, foo.index
* getStatus(string $status) -> /foo/status/{status}, foo.status.post
* postStatus(string $status) -> /foo/status/{status}, foo.status.get
* foo() -> /foo/foo, foo.foo
* my() -> /foo/my, foo.my## TODO
* unit test
* QA tools
* travis
* styleci
* scrutinizer
* ...## Alternative
* https://github.com/lesichkovm/laravel-advanced-route
* https://github.com/themsaid/laravel-routes-publisher
* https://github.com/shrimpwagon/laravel-route-controller
* https://www.larablocks.com/package/eightyfive/laravel-autoroute
* https://gist.github.com/cotcotquedec/df15f9111e5c8d118ac270f6a157c460
* ...