Laravel 5 do começo ao fim [parte 2]

Esta é a segunda parte do tutorial sobre Laravel 5, caso você não tenha ainda visto, veja a primeira parte dessa série neste link.

Continuando o tutorial vamos agora partir para a parte MVC do framework, o laravel assim como a maioria dos frameworks utiliza esse conceito, veja abaixo uma tabela explicativa:

Model = Camada que faz a interface com as tabelas do banco de dados
View = Camada de visualização propriamente
Controller = Camada que faz a ligação entre “M” e “V”

Mão na massa

Vamos antes de mais nada criar nossas rotas, afinal, são através delas que nossas funções serão disponibilizadas, o arquivo de rotas fica em app/Htpp/routes.php, caso você não conheça o protocolo HTTP, abaixo vai uma tabela rápida de contextualização de alguns métodos.

GET Método de chamada padrão utilizado para requisitar um recurso do servidor.
POST Método de chamada utilizado para enviar dados de inserção no servidor
PUT Método de chamada utilizado para enviar dados de atualização no servidor
DELETE Método de chamada utilizado para enviar dados de exclusão no servidor

Existem outros métodos do protocolo HTTP, porém estes são normalmente os mais utilizados.

Abrindo este arquivo, você verá que basicamente está sendo chamado a classe Route que é a classe que cria as rotas no laravel, com algumas rotas já definidas, na documentação do laravel disponível neste link você verá todas as possibilidades de rotas, para este exemplo vamos fazer uma lista de tarefas com as seguintes rotas:

Método HTTP Caminho Descrição
GET /tarefa Listagem de todas as tarefas
GET /tarefa/create Formulário de cadastro
GET /tarefa/edit Formulário de edição
POST /tarefa Ação de cadastrar efetivamente
PUT /tarefa Ação de atualizar efetivamente
DELETE /tarefa Ação de excluir efetivamente

Para criar estas rotas precisamos simplesmente adicionar a seguinte linha no arquivo routes.php:

Route::resource('tarefa', 'TarefaController');

Conforme a documentação do laravel, este comando cria rotas para um serviço RESTful, a lista completa das rotas geradas e outras formas de rotas você pode ver neste link.

Lembrando apenas que ainda não criamos nosso controller, para isso precisamos executar o seguinte comando no terminal na raiz do projeto:

php artisan make:controller TarefaController

Um arquivo chamado TarefaController.php será criado no diretório app/Http/Controllers. Abrindo este arquivo podemos ver que foi criado uma classe “esqueleto” para nós já com todos os métodos necessários. Para provar que não estou mentindo e que tudo está funcionando adicione a seguinte linha no método index dessa classe:

return 'Olá Mundo com Laravel 5';

Depois execute no terminal o seguinte comando:

php artisan serve

Isso iniciará o servidor de testes do laravel na porta 8000 da máquina atual, portanto acesse o endereço http://localhost:8000 para ver a página inicial do laravel, agora acessando o endereço http://localhost:8000/tarefa que chamará via método GET a rota /tarefa que está associado ao controller TarefaController pelas nossas rotas no método index() e portanto o texto “Olá Mundo com Laravel 5” deve ser exibido na tela.

Pois bem, galera esse tutorial vai ficar grande e estou separando em mais partes, na próxima parte mostrarei a parte de Models e Views e, por fim, parte de testes com os novos recursos do Laravel 5, espero que estejam gostando, aguardem pelas próximas postagens.

  • Romualdo Costa

    Olá.
    O certo não seria “php artisan controller:make TarefaController” ?

    • Jonathan André Schweder

      na verdade não, estou usando a versão 5 do Laravel como está no título.

      • Romualdo Costa

        Valeu! Não reparei nisso. Vou mudar agora!

  • Romualdo Costa

    Olá.
    O certo não seria “php artisan controller:make TarefaController” ?

    • Jonathan André Schweder

      na verdade não, estou usando a versão 5 do Laravel como está no título.

      • Romualdo Costa

        Valeu! Não reparei nisso. Vou mudar agora!

  • Romualdo Costa

    Olá.
    O certo não seria “php artisan controller:make TarefaController” ?

    • Jonathan André Schweder

      na verdade não, estou usando a versão 5 do Laravel como está no título.

      • Romualdo Costa

        Valeu! Não reparei nisso. Vou mudar agora!

  • Aurélio Guedes

    O laravel 5 ficou TOP, eu estava mergulhado no mundo Java com Spring, peguei muitos conceitos importantes mas complicados de se aplicar, no php, conseguem implementar isto com uma facilidade permitindo uma curva de aprendizado menor. E parabéns a você por descomplicar ainda mais.

  • Aurélio Guedes

    O laravel 5 ficou TOP, eu estava mergulhado no mundo Java com Spring, peguei muitos conceitos importantes mas complicados de se aplicar, no php, conseguem implementar isto com uma facilidade permitindo uma curva de aprendizado menor. E parabéns a você por descomplicar ainda mais.

  • Aurélio Guedes

    O laravel 5 ficou TOP, eu estava mergulhado no mundo Java com Spring, peguei muitos conceitos importantes mas complicados de se aplicar, no php, conseguem implementar isto com uma facilidade permitindo uma curva de aprendizado menor. E parabéns a você por descomplicar ainda mais.

  • Gregory lima Derner

    Ola amigos, a parte 3 do tutorial está com erro 404

    https://blog.butecopensource.org/tutorial-laravel-5-parte-3/

  • Gregory lima Derner

    Ola amigos, a parte 3 do tutorial está com erro 404

    https://blog.butecopensource.org/tutorial-laravel-5-parte-3/

  • Gregory lima Derner

    Ola amigos, a parte 3 do tutorial está com erro 404

    https://blog.butecopensource.org/tutorial-laravel-5-parte-3/

  • Arlen Mendes

    Eu não estou conseguindo criar o controller. Segue o erro:

    [UnexpectedValueException]
    Invalid route action: [AppHttpControllerTarefaController]

    • Jonathan André Schweder

      olá, qual a versão do framework você está usando ? na versão atual 5.1 diversas facilidades foram removidas, talvez seja esse o caso.

      • Arlen Mendes

        A 5.1 mesmo. Mas o erro persiste.

        • Paulo Sitonio

          Opa, creio que só deve ser adicionada essa linha no routes.php:

          Route::resource(‘tarefa’, ‘TarefaController’);

          As demais não seriam necessárias.

      • Arlen Mendes

        Desculpe, deixe-me me corrigir aqui. O erro acontece devido eu ter criado as rotas do inicio deste tutorial. No meu arquivo Routes.php ficou assim minhas rotas.

        Route::get(‘tarefa’, ‘TarefaController’);

        Route::get(‘tarefa/create’, ‘TarefaController’);

        Route::get(‘tarefa/edit’, ‘TarefaController’);

        Route::post(‘tarefa’, ‘TarefaController’);

        Route::put(‘tarefa’, ‘TarefaController’);

        Route::delete(‘tarefa’, ‘TarefaController’);

        • Tivon

          Você não precisa repetir tudo assim

  • Arlen Mendes

    Eu não estou conseguindo criar o controller. Segue o erro:

    [UnexpectedValueException]
    Invalid route action: [AppHttpControllerTarefaController]

    • Jonathan André Schweder

      olá, qual a versão do framework você está usando ? na versão atual 5.1 diversas facilidades foram removidas, talvez seja esse o caso.

      • Arlen Mendes

        A 5.1 mesmo. Mas o erro persiste.

        • Paulo Sitonio

          Opa, creio que só deve ser adicionada essa linha no routes.php:

          Route::resource(‘tarefa’, ‘TarefaController’);

          As demais não seriam necessárias.

      • Arlen Mendes

        Desculpe, deixe-me me corrigir aqui. O erro acontece devido eu ter criado as rotas do inicio deste tutorial. No meu arquivo Routes.php ficou assim minhas rotas.

        Route::get(‘tarefa’, ‘TarefaController’);

        Route::get(‘tarefa/create’, ‘TarefaController’);

        Route::get(‘tarefa/edit’, ‘TarefaController’);

        Route::post(‘tarefa’, ‘TarefaController’);

        Route::put(‘tarefa’, ‘TarefaController’);

        Route::delete(‘tarefa’, ‘TarefaController’);

        • Tivon

          Você não precisa repetir tudo assim

  • Arlen Mendes

    Eu não estou conseguindo criar o controller. Segue o erro:

    [UnexpectedValueException]
    Invalid route action: [AppHttpControllerTarefaController]

    • Jonathan André Schweder

      olá, qual a versão do framework você está usando ? na versão atual 5.1 diversas facilidades foram removidas, talvez seja esse o caso.

      • Arlen Mendes

        A 5.1 mesmo. Mas o erro persiste.

        • Paulo Sitonio

          Opa, creio que só deve ser adicionada essa linha no routes.php:

          Route::resource(‘tarefa’, ‘TarefaController’);

          As demais não seriam necessárias.

      • Arlen Mendes

        Desculpe, deixe-me me corrigir aqui. O erro acontece devido eu ter criado as rotas do inicio deste tutorial. No meu arquivo Routes.php ficou assim minhas rotas.

        Route::get(‘tarefa’, ‘TarefaController’);

        Route::get(‘tarefa/create’, ‘TarefaController’);

        Route::get(‘tarefa/edit’, ‘TarefaController’);

        Route::post(‘tarefa’, ‘TarefaController’);

        Route::put(‘tarefa’, ‘TarefaController’);

        Route::delete(‘tarefa’, ‘TarefaController’);

        • Tivon

          Você não precisa repetir tudo assim

  • Bruno Torres

    Você explica muito bem, cara. Parabéns!
    Melhor tutorial de Laravel 5 disparado, haha.

  • Bruno Torres

    Você explica muito bem, cara. Parabéns!
    Melhor tutorial de Laravel 5 disparado, haha.

  • Bruno Torres

    Você explica muito bem, cara. Parabéns!
    Melhor tutorial de Laravel 5 disparado, haha.

  • Cara, parabéns pelo ótimo trabalho!!!
    Talvez seja um erro bobo, mas não estou encontrando uma solução.
    Fiz todos os passos conforme mostrado acima. Quando vou visualizar no browser dá esse erro aí:

    FatalErrorException in TarefaController.php line 12:
    syntax error, unexpected ‘return’ (T_RETURN), expecting function (T_FUNCTION)

    Minha versão do Laravel é a 5.2.14

    • Flávio Souza Dos Santos

      entra no controller e coloca manualmente a classe index() com esse return!

  • Cara, parabéns pelo ótimo trabalho!!!
    Talvez seja um erro bobo, mas não estou encontrando uma solução.
    Fiz todos os passos conforme mostrado acima. Quando vou visualizar no browser dá esse erro aí:

    FatalErrorException in TarefaController.php line 12:
    syntax error, unexpected ‘return’ (T_RETURN), expecting function (T_FUNCTION)

    Minha versão do Laravel é a 5.2.14

  • Cara, parabéns pelo ótimo trabalho!!!
    Talvez seja um erro bobo, mas não estou encontrando uma solução.
    Fiz todos os passos conforme mostrado acima. Quando vou visualizar no browser dá esse erro aí:

    FatalErrorException in TarefaController.php line 12:
    syntax error, unexpected ‘return’ (T_RETURN), expecting function (T_FUNCTION)

    Minha versão do Laravel é a 5.2.14

  • Douglas Dreer

    Fiz todos os passo passados, mas quando digitei o comando ‘php artisan make:controller LivrosController’ ele gerou o arquivo, mas não criou nenhum método. =/
    Estou usando a última versão do Laravel 5.2.x

    • Flávio Souza Dos Santos

      coloque o método index(), dentro dele coloca o return que foi passado no tutorial
      manualmente! Acabei de fazer isso no meu e funcionou!

  • Douglas Dreer

    Fiz todos os passo passados, mas quando digitei o comando ‘php artisan make:controller LivrosController’ ele gerou o arquivo, mas não criou nenhum método. =/
    Estou usando a última versão do Laravel 5.2.x

  • Douglas Dreer

    Fiz todos os passo passados, mas quando digitei o comando ‘php artisan make:controller LivrosController’ ele gerou o arquivo, mas não criou nenhum método. =/
    Estou usando a última versão do Laravel 5.2.x

  • Gerson Galeno

    Parabens pela iniciativa! Para criar o resource a partir da versão 5.2 é preciso utilizar –resource, ficando assim: php artisan make:controller –resource TarefaController

  • Carlos Eduardo Máximo

    Agora no Laravel 5.3 o caminho de routes está na raiz/routes/web.php.
    E o comando artisan make:controller TarefaController não criou os métodos __construct e index(), vocês sabem PQ?

    • Renato De Oliveira Lucena

      vc conseguiu resolver?

  • Renato De Oliveira Lucena

    descobrir, dentro do novo controller vc coloca:
    <?php

    namespace AppHttpControllers;

    use IlluminateHttpRequest;

    class TarefaController extends Controller
    {
    //
    public function index(){
    return 'Olá Mundo com Laravel 5';
    }
    }

    • Renato De Oliveira Lucena

      <?php namespace AppHttpControllers; use IlluminateHttpRequest; class TarefaController extends Controller { // public function index(){ return 'Olá Mundo com Laravel 5'; } }

  • Renato De Oliveira Lucena

    <?php

    namespace AppHttpControllers;

    use IlluminateHttpRequest;

    class TarefaController extends Controller
    {
    //
    public function index(){
    return 'Olá Mundo com Laravel 5';
    }
    }

  • Renato De Oliveira Lucena

    public function index(){ return ‘Olá Mundo com Laravel 5’; }

  • Paulo Ricardo Aguiar

    Excelente Artigo! Está me ajudando muito! Parabéns.