

Github GitHub - izniburak/laravel-auto-routes: Auto Route Generating (Auto-Disco...
source link: https://github.com/izniburak/laravel-auto-routes
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Laravel Auto Routes
_ _____ _
/\ | | | __ \ | |
/ \ _ _| |_ ___ ______| |__) |___ _ _| |_ ___ ___
/ /\ \| | | | __/ _ \______| _ // _ \| | | | __/ _ \/ __|
/ ____ \ |_| | || (_) | | | \ \ (_) | |_| | || __/\__ \
/_/ \_\__,_|\__\___/ |_| \_\___/ \__,_|\__\___||___/
Automatically Route Generator Package for Laravel.
Install
Supported Laravel Versions: >= 6.x
Run the following command directly in your Project path:
$ composer require izniburak/laravel-auto-routes
The service provider of the Package will be automatically discovered by Laravel.
After that, you should publish the config file via following command:
$ php artisan vendor:publish --provider="Buki\AutoRoute\AutoRouteServiceProvider"
Greate! You can start to use Auto Route Package.
Usage
Open web.php
or api.php
files in routes
directory, and add a new route that will be generated automatically:
Route::auto('/test', 'TestController');
All methods will be automatically generated by the AutoRoute Package.
Details
-
You can use
auto-route.php
file inconfig
directory in order to change configuration of the Package. You can;- add new patterns for the parameters of the methods.
- change default HTTP methods.
- change main method.
-
You can use
AutoRouteFacade
inweb.php
andapi.php
in order to simple code completion for the method while using an IDE or Editor. You can add the following line to top of the file:
use Buki\AutoRoute\AutoRouteFacade as Route;
-
All methods which will be auto generated must have
public
accessor to discovered by the AutoRoute Package. -
If you use
camelCase
style for your method names in the Controllers, these methods endpoints will automatically convert tokebab-case
to make pretty URLs. For example:
Route::auto('/test', 'TestController'); # OR Route::auto('/test', TestController::class);
namespace App\Http\Controllers; use Illuminate\Http\Request; class TestController extends Controller { /** * URL will be converted to "/test/foo-bar" */ public function fooBar(Request $request) { // your codes } }
- You can specify HTTP Method for the method of the Controllers. If you want that a method works with
GET
method and other method works withPOST
method, you can do it. Just add a prefix for the method. That's all. For example;
namespace App\Http\Controllers; use Illuminate\Http\Request; class TestController extends Controller { /** * URL: "/test/foo-bar" * This method will only work with 'GET' method. */ public function getFooBar(Request $request) { // your codes } /** * URL: "/test/bar-baz" * This method will only work with 'POST' method. */ public function postBarBaz(Request $request) { // your codes } }
-
If you don't add any prefix to your methods to use HTTP method definition, all URL will work with all HTTP methods. This options can be changed from
auto-route.php
configuration file. -
If you want to use
snake_case
format for your methods, you can do it like that:
namespace App\Http\Controllers; use Illuminate\Http\Request; class TestController extends Controller { /** * URL: "/test/foo_bar" * This method will only work with 'GET' method. */ public function get_foo_bar(Request $request) { // your codes } /** * URL: "/test/bar_baz" * This method will only work with 'POST' method. */ public function post_bar_baz(Request $request) { // your codes } }
- You can add route options via third parameter of the
auto
method.
Route::auto('/test', 'TestController', [ // your options... ]);
Options array may contain all Laravel route attributes like name
, middleware
, namespace
, etc..
In addition, you can add patterns
into the Options array in order to define new patterns for the parameters of the methods in the Controllers. For example:
Route::auto('/test', 'TestController', [ 'name' => 'test', 'middleware' => [YourMiddleware::class], 'patterns' => [ 'id' => '\d+', 'value' => '\w+', ], ]);
According to example above, you can use $id
and $value
parameters in all methods in the Controller. And for these parameters, the rules you defined will be applied.
Also, to define default patterns for the parameters, you can modify patterns
in auto-route.php
file.
- You can specify the Routes which will be generated automatically by using
only
orexcept
withoptions
parameters. You should use method names in the Controllers. For example;
# First Example Route::auto('/foo', 'FooController', [ 'only' => ['fooBar', 'postUpdatePost'], ]); # Second Example Route::auto('/bar', 'BarController', [ 'except' => ['test', 'putExample'], ]);
According to first example above, only two methods will be generated. And according to other example, all methods will be generated except two methods which specified.
- If you don't change the
main_method
in configurations, your main method will beindex
for the Controllers. That's mean, you should be addindex
method into your controller to define base endpoint of the Controller. For example;
Route::auto('/test', 'TestController');
namespace App\Http\Controllers; use Illuminate\Http\Request; class TestController extends Controller { /** * URL: "/test" */ public function index(Request $request) { // your codes } /** * URL: "/test/foo-bar" */ public function fooBar(Request $request) { // your codes } }
- You can use parameters as
required
andoptional
for the methods in your Controllers. For example;
namespace App\Http\Controllers; use Illuminate\Http\Request; class TestController extends Controller { /** * URL: "/test/{id}" */ public function index(Request $request, $id) { // your codes } /** * URL: "/test/foo-bar/{name}/{surname?}" */ public function fooBar(Request $request, $name, $surname = null) { // your codes } }
Also, you can use parameter type to use compatible pattern for the parameter. Parameter types can be int
, string
, float
and bool
. For example:
namespace App\Http\Controllers; use Illuminate\Http\Request; class TestController extends Controller { /** * URL: "/test/{id}" * id parameter must be numeric. */ public function index(Request $request, int $id) { // your codes } /** * URL: "/test/foo-bar/{name}/{surname?}" * name and surname parameters must be string. */ public function fooBar(Request $request, string $name, string $surname = null) { // your codes } }
If you define patterns for these variable names in the auto-route.php
configuration file, your definition will be used for the value checking.
To use int
, float
, string
and bool
patterns quickly for your parameters, you can use parameter type directly.
- You can use subfolder definition for the Controllers. For example;
Route::auto('/test', 'Backend.TestController'); # OR Route::auto('/test', 'Backend\\TestController');
Support
You can use Issues
Licence
Contributing
- Fork it ( https://github.com/izniburak/laravel-auto-routes/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request
Contributors
- izniburak İzni Burak Demirtaş - creator, maintainer
Recommend
-
8
Laravel’s route model binding is a very powerful feature. It provides a nice and simple way to fetch automatically models from the database based on the credentials that the URI contains. Let’s take a look at how to make it even more...
-
10
Available optionsWorking with Vue.js gives us more flexibility. We can easily take advantage of existing libraries such as vue-js-modal or creating our own client side one. However,...
-
9
Ziggy – Use your Laravel routes in JavaScript Ziggy provides a JavaScript route() helper function that works like Laravel's, making it easy to use your Laravel named routes in JavaScript. Ziggy supports all versio...
-
8
Pretty Routes for Laravel Display your Laravel routes in the console, but make it pretty. Installation You can instal...
-
4
Develop faster by adding dev routes file in a Laravel app Original – ...
-
9
Use PHP 8 attributes to register routes in a Laravel app This package provides annotations to automatically register routes. Here's a quick example: use Spatie\RouteAttributes\Attributes\Get; class MyController { #...
-
3
Log Laravel route usage statistics Log Laravel requests and responses for statistical purposes and optionally aggregate by hours/days/months for minimal db requirements. Description Log requests and group them togethe...
-
9
Harry Nguyen Posted on Nov 27...
-
5
Test Your Laravel Routing Skills This repository is a test for you: fill in routes/web.php and routes/api.php which are left intentionally empty. In both of those files, you will find comments, descri...
-
10
I'm proud to announce that our team has released a new package called spatie/laravel-route-discovery. This package can be used to automatically discover and register routes by looki...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK