Olá, Habr. Recentemente, concordei com a revisão de um site encomendado como freelancer. Eu esperava ver controladores que fazem tudo e ocupam mais de 200 linhas (e outras manifestações de código incorreto), mas tudo foi bastante decente. A validação não estava no controlador, o que é bastante comum. Às vezes, é claro, havia algumas inconsistências no PSR-2, mas tudo parecia bem até que eu olhei no arquivo com as rotas. Ocupava várias telas e tinha comentários sobre grupos de rotas. Entrei em contato com o desenvolvedor e ele disse que tudo havia "crescido" um pouco e concordou em corrigi-lo. Na próxima versão, vi que ele criou várias classes com métodos estáticos, para as quais transferiu o código e as chamou, como geralmente é feito, com autorização. Lembrei-me de que já havia encontrado isso e conheci um argumento assim: "A documentação não diz nada sobre rotas para arquivos diferentes". Poucos minutos depois, encontrei um artigo e o enviei ao desenvolvedor. Depois de meia hora, recebi as rotas na forma normal e decidi que este artigo seria útil para muitos iniciantes. Então esta tradução gratuita nasceu.
Se você nunca editou o arquivo RouteServiceProvider, bem-vindo ao cat.
Se você estiver trabalhando com um projeto pequeno e tiver apenas algumas rotas, não haverá problemas. Porém, quando o número de rotas é muito grande, é difícil trabalhar em um arquivo, especialmente quando você tem páginas para diferentes usuários, administradores, etc.
Inicialmente, o laravel cria 4 arquivos:
- api.php
- console.php
- canais.php
- web.php
Suponha que você planeje criar um projeto com dez páginas para cada tipo de usuário:
- Administrador [configurações do site, estatísticas, etc. ]
- Usuário [registro, login, gerenciamento de perfis, etc. ]
- Convidados [blog, contatos etc. ]
Crie dois diretórios dentro das
rotas :
- web - aqui estão todas as rotas associadas à interface da web.
- api - aqui estão todas as rotas relacionadas à API
Nós movemos
api.php das
rotas para o
diretório routes / api e
web.php em
routes / web , e deixamos o restante
console.php e
channels.php nas rotas.
Crie o arquivo
admin.php dentro de
routes / web . Este arquivo conterá todas as nossas rotas da web associadas ao administrador e, em seguida, criará
user.php para as rotas associadas ao usuário.
app / Providers / RouteServiceProvider.php - este arquivo é responsável por baixar todas as rotas de nosso aplicativo. O método
map () chama os
métodos mapApiRoutes () e
mapWebRoutes () para carregar os arquivos
web.php e
api.php que já movemos, então vamos corrigir os caminhos para os arquivos de rota.
protected function mapWebRoutes() { Route::middleware('web') ->namespace($this->namespace) ->group(base_path('routes/web/web.php')); }
protected function mapApiRoutes() { Route::prefix('api') ->middleware('api') ->namespace($this->namespace) ->group(base_path('routes/api/api.php')); }
Agora crie novos métodos para
routes / web / admin.php e
routes / web / user.php dentro de
RouteServiceProvider.php protected function mapAdminWebRoutes() { Route::middleware('web') ->namespace($this->namespace) ->prefix('admin') ->group(base_path('routes/web/admin.php')); }
protected function mapUserWebRoutes() { Route::middleware('web') ->namespace($this->namespace) ->prefix('user') ->group(base_path('routes/web/user.php')); }
Observe que neste código é possível adicionar espaço para nome, middleware, prefixo etc. para os caminhos.
Em seguida, basta chamá-los de map ():
public function map() { $this->mapApiRoutes(); $this->mapWebRoutes(); $this->mapAdminWebRoutes(); $this->mapUserWebRoutes(); }
Última etapa:
Abra rotas / web / user.php e adicione uma rota de teste:
Route::get('/test', function () { return response(' ', 200); });
Vá para site.local / user / test, você deverá ver o texto "Rota de teste".