• Reading time ~ 1 min
  • 24.08.2022

Auto Routes for Laravel is a package by İzni Burak Demirtaş that generates routes from a controller using auto-discovery. It works by discovering public methods on a controller and generating routes for them:

// routes/web.php
Route::auto('/test', TestController::class);
 
//
// Controller example
//
namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
 
class TestController extends Controller
{
    /**
     * URL: "/test" - main method
     */
    public function index(Request $request)
    {
        // controller code
    }
 
    /**
     * URL: "/test/foo-bar"
     * This method will only work with 'GET' method.
     */
    public function getFooBar(Request $request)
    {
        // controller code
    }
 
    /**
     * URL: "/test/foo_bar"
     * This method will only work with 'GET' method.
     */
    public function get_foo_bar(Request $request)
    {
        // controller code
    }
 
 
    /**
     * URL: "/test/bar-baz"
     * This method will only work with 'POST' method.
     */
    public function postBarBaz(Request $request)
    {
        // controller code
    }
}

The route method also takes a third argument to configure parameters and middleware:

Route::auto('/test', TestController::class, [
    'name' => 'test',
    'middleware' => [YourMiddleware::class],
    // Parameters become available to methods
    'patterns' => [
        'id' => '\d+',
        'value' => '\w+',
    ],
]);
 
// Limit the methods that will define routes
Route::auto('/foo', 'FooController', [
    'only' => ['fooBar', 'postUpdatePost'],
]);

While most developers are happy with Laravel's built-in routing definitions (Laravel routing is so good in my humble option), it is a unique idea with examples in the source code of working with PHP's reflection API and the Laravel router. You can learn more about this package, get full installation instructions, and view the source code on GitHub.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

ABOUT

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

About author CrazyBoy49z
WORK EXPERIENCE
Contact
Ukraine, Lutsk
+380979856297