Entendendo e trabalhando com módulos no Laravel 4 17

Olá, atualmente trabalho com Laravel a 5 meses em um projeto de portal e um sistema de gestão de alunos e nessa jornada de aprendizado e muitas pesquisas, passei por uma série de problemas e um deles foi a separação das camadas da aplicação Laravel.

Após encontrar a solução tomei a iniciativa de escrever uma série de tutoriais sobre este assunto.

Nesse primeiro tutorial irei comentar sobre a instalação e alguns comandos Artisan sobre uma estrutura modular com Laravel.

A solução que encontramos foi o: “Laravel Modules da Creolab” e acreditem estou muito feliz por essa descoberta.

Segue o link GIT Hub do Laravel Modules: https://github.com/creolab/laravel-modules

A primeira coisa que vocês deverão ter é o Laravel instalado e configurado no seu servidor Web, caso não tenha, não se preocupe o que você precisa fazer é os passos a seguir:

  • git clone [email protected] github.com: laravel/ laravel.git pasta_instalacao
  • Entrar na pasta onde o laravel foi baixado
  • Executar o comando composer install

Caso tudo esteja correto ao acessar o seu localhost/pasta_instalacao/public você verá uma imagem como essa:

1

Com isso, já podemos iniciar as configurações dos nossos módulos.

Nós iremos ter duas camadas inicias em nosso sistema que serão:

  • CMS
  • Admin

Com o Laravel instalado e funcionando iremos nesse momento alterar o nosso arquivo:

  • composer.json.

Você irá acrescentar a dependência do Laravel Modules, segue exemplo:

  • “creolab/laravel-modules”: “dev-master”

Se a sua instalação estiver como a minha provavelmente a linha mencionada ficara da seguinte forma:

2

Agora o que você precisa executar é um: composer install ou composer update.

Observação: O update e caso queira além de instalar atualizar suas Vendors.

Após feita a instalação do Laravel Modules você irá precisar informar a sua aplicação que existe um novo Provider que é o Laravel Modules, abra o arquivo no caminho:

  • app/config/app.php

Procure o array: providers e insira o Laravel Modules:

  • ‘Creolab\LaravelModules\ServiceProvider’

Feita essa configuração você irá criar a seguinte estrutura:

app/
|-- modules
    |-- CMS
      |-- controllers
      |-- models
      |-- views
      |-- module.json
    |-- Admin
      |-- controllers
      |-- models
      |-- views
      |-- module.json

Agora precisamos informar ao Composer sobre essa pasta, abra novamente o arquivo:

  • composer.json.

Na linha onde consta a instrução de (classmap), insira a seguinte instrução:

  • “app/modules” – Ficando conforme a imagem a baixo:

3

Agora execute o seguinte comanado:

  • composer dump-autoload

Após executar esse comando iremos configurar a ordem de exibição de seus módulos, nos arquivos json criados conforme instrução a cima:

No arquivo: app/modules/CMS/module.json coloque o seguinte comando:

{
'order': 1
}

E no arquivo app/modules/Admin/module.json coloque o seguinte comando:

{
'order': 2
}

Para verificar se as configurações estão corretas, execute o seguinte comando em seu terminal:

  • php artisan modules

Se tudo estiver correto, você verá a seguinte saída em seu terminal:

+——-+——————–+——-+———+
| Name | Path | Order | Enabled |
+——-+——————–+——-+———+
| Admin | /app/modules/Admin | 1 | true |
| CMS | /app/modules/CMS | 2 | true |
+——-+——————–+——-+———+

Para não tornar esse tutorial tão extenso, irei dar continuidade nos próximos assuntos abordando os seguintes tópicos:

  • Configurações das controllers em camadas
  • Models
  • Views
  • Layout
  • Rotas.

Espero que esse tutorial inicial tenha ajudado a mostrar a vocês o quão maduro o Laravel está e como a comunidade lida para ajudar a todos.

Sem mais, fica meu agradecimento e um abraço.

  • Gilvan Júnior

    Cara, bem interessante. Esses módulos poderiam ser gerenciados por controle de versão?

  • Michael Douglas

    Gilvan, você poderia gerar branchs para cada módulo e trabalhar com eles.

    • Gilvan Júnior

      E como packages? É possível?

  • rgazeredo

    Quando sai a próxima parte desse tutorial?

    • Michael Douglas

      Irei fazer alguns ajustes na segunda parte do tutorial, mas acredito que no máximo em 10 dias ou menos eu publico, abraços.

  • Guest

    Galera no segundo tutorial, eu posto os códigos no Git Hub.

  • Michael Douglas

    Galera no segundo tutorial eu posto os códigos no Git Hub, abraços.

  • Átila Delcanton

    Show faz 2 semanas que estou trabalhando com o laravel, e fiquei interessado nos modulos, fica bem mais organizado o projeto!

  • Michael Douglas

    Galera, estou trabalhando agora na segunda etapa do tutorial, assim que revisar o texto eu posto e também disponibilizo os códigos fonte.

  • Átila Delcanton

    Trabalhando com Módulos, alteraria o modo de montar as rotas também?

  • aguinelo

    Estou com esta necessidade, mas por desconhecer essa parte de módulos no Laravel acabei criando o app sem módulos e agora preciso incluir um módulo de admin, isso poderia ser feito no app ja existente ou o ideal seria criar uma nova estrutura com o app existente como um módulo? Obrigado

  • marviorocha

    Opa! Estava em busca de um pack bom, finalmente encontrei! Para não ter mais dor de cabeça!

  • http://tuyoshi.com.br Tuyoshi Vinicius

    Interessante ele disponibiliza uma hierarquia HMVC certo?

  • Luan Rodrigues

    Pretende continuar???

  • Michael Douglas

    Galera, peço desculpa pela demora em montar o segundo tutorial.

    segue o link do novo: http://www.laravel.com.br/trabalhando-com-modulos-criando-as-camadas-admin-e-cms/

  • quinhone

    dá pra usar esse modules para dividir o site em 3 línguas ex: pt us e es?

  • quinhone

    Compatível com Laravel 5?