DEV Community

Cover image for Como registrar as rotas de seus pacotes de forma CORRETA!
Jean Jar Pereira de Araújo
Jean Jar Pereira de Araújo

Posted on

Como registrar as rotas de seus pacotes de forma CORRETA!

Primeiro você deve criar um SericeProvider no seu pacote para que no Laravel possa reconhecer as rotas que foram definidas.

Como estamos falando de um pacote então não temos o tinkerpara nos ajudar com o seu recurso de criação de ServiceProvider artisan make:provider, sendo assim precisamos criar ele na mão.

Crie um arquivo chamado RouteServeProvider dentro da sua estrutura do seu pacote

$ touch vendor/namespace/Providers/RouteServiceProvider.php

Agora vamos escrever o código do nosso Provider.

<?php

namespace vendor\namespace\Providers;

use Illuminate\Routing\Router;

#Classe que possui todas as configurações corretas para a injeção de rotas
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;

class RouteServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot(Router $router)
    {
        parent::boot($router);
    }

    public function map(Router $router)
    {
        $router->group([
            #Namespace dos controllers do seu pacote
            'namespace' => 'vendor\namespace\Http\Controllers',
            'prefix' => 'myprefix',
            'middleware' => ['...'],
        ], function ($router) {
            require app_path('path/to/my/routes.php');
        });
    }
}

Caso seu pacote seja compatível com o Laravel <= 5.4 você deve instruir ao usuário do seu pacote a registrar ele nos providers do projeto.

Para que o provider seja descoberto automaticamente adicione ele nos extras do seu composer.json

"extra": {
    "laravel": {
        "providers": [
            "vendor\\namespace\\Providers\\RouteServiceProvider"
        ],
    }
}

E pronto! a partir de agora você pode escrever as rotas do seu pacote normalmente, assim como as rotas do seu projeto!

Estrutura final do nosso pacote

vendor/
    namespace/
        Http/
            Controllers/
        Providers/
            RouteServiceProvider.php
        path/
            to/
                my/
                    routes.php

Então é isso galera! até a próxima! :D

Top comments (0)