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

3

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

Sentry blog image

How I fixed 20 seconds of lag for every user in just 20 minutes.

Our AI agent was running 10-20 seconds slower than it should, impacting both our own developers and our early adopters. See how I used Sentry Profiling to fix it in record time.

Read more

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay