Como organizar: Painel e Site no Laravel 5
Algumas pessoas ficam na dúvida em como organizar seus controllers e views para dois ou mais ambientes, como por exemplo: Site (front) e o Admin (Painel)
Pretendo dar algumas dicas de como fazer isso no Laravel.
Organizando seus Controllers
Há quem ache que você possa/deva usar o mesmo controller, e isso esta MUITO errado.
Quem conhece SOLID sabe que controller/classes devem possuir apenas uma responsabilidade, e ao usar o mesmo controller no painel e no front você esta dando muita responsabilidade a sua classe.
Use namespaces, é para isso que eles existem
É extremamente fácil organizar sua aplicação usando namespaces, e o Laravel + Composer deixa essa tarefa ainda mais fácil
Lembre-se que os namespaces são o reflexo das suas pastas
Nesse modelo fica bem fácil a organização dos seus controllers, e possibilita a você criar lógicas que serão estendidas a todos os outros controllers do seu “módulo”.
Fácil não?
Organizando suas rotas
E como ficam as rotas?
Route::group foi feito para ser usado
Coisa linda!
Ainda sobre rotas, segue uma dica extra:
Organizando suas views
De que vale toda essa organização se suas views ficarem bagunçadas?
Sei que você é esperto e colocou suas views em pastas separadas, e corretamente as usa assim: view(‘painel.products.index’)
É mais uma preferencia pessoal do que um “guia de como fazer” mas eu gosto de chamar minhas views assim: view(‘painel::products.index’)
Qual o beneficio dessa abordagem? Poucos alem da dorganização visual.
Mas se um dia, por algum motivo você precisar mover sua pasta de views do painel para outro lugar, você não vai precisar fazer muita coisa, pois é só mudar o local do seu “namespace”
Espero ter ajudado vocês a entenderem como organizar pelo menos essa parte do projeto, claro que ainda há muito a se considerar, como seus models e repositórios, mas acredito que esta é a base para 99% dos projetos do gênero.
that’s all folks