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 tinker
para 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)