Git hub and Laravel

108
Git Sistema de Controle de Versão Git Comandos Básicos de Git 09/04/2016 Presentation licenced under non-commercial creative commons 3.0

Transcript of Git hub and Laravel

Page 1: Git hub and Laravel

Git

Sistema de Controle de Versão

Git

Comandos Básicos de Git

09/04/2016Presentation licenced under non-commercial creative

commons 3.0

Page 2: Git hub and Laravel

Sistemas de Controle de Versão

09/04/2016Presentation licenced under non-commercial creative

commons 3.0

Page 3: Git hub and Laravel

Sistema de Controle de Versão

09/04/2016Presentation licenced under non-commercial creative

commons 3.0

Page 4: Git hub and Laravel

• Registra mudanças feitas em um arquivo ou conjunto de arquivos ao longo do tempo;

• É possível recuperar versões anteriores;

• Verificar contribuições de cada membro no projeto;

• Pode ser utilizado para qualquer coisa que se altera com o tempo, como CV, Software, Documentos Legais;

• Ex: ”seguimento de revisão” do MS Word

09/04/2016Presentation licenced under non-commercial creative

commons 3.0

Page 5: Git hub and Laravel

Tipos de Sistemas de Controle de Versão

Sistema de Controle de Versão Local

09/04/2016Presentation licenced under non-commercial creative

commons 3.0

Sistema de Controle de Versão Centralizado

Page 6: Git hub and Laravel

Tipos de Sistemas de Controle de Versão

Sistema de Gestão de Versão Distribuída

• Qualquer um pode ser servidor;

• Múltiplos Clientes Clonam repositórios completos;

• O registro de alteração e diferente da aplicação da alteração;

09/04/2016Presentation licenced under non-commercial creative

commons 3.0

Page 7: Git hub and Laravel

Git

09/04/2016Presentation licenced under non-commercial creative

commons 3.0

Page 8: Git hub and Laravel

And then realize that nothing is perfect. Git isjust *closer* to perfect than any other SCM outthere.

_ _

Linus

09/04/2016Presentation licenced under non-commercial creative

commons 3.0

Page 9: Git hub and Laravel

• 2002 - Linus Tovards usa BitKeeper para o controle de versões de Linux.

• 6 de Abril de 2015 – Termina a licença de BitKeeper e Linus decide criar o seu próprio SCM

• 18 de Abril de 2005 – GIT é laçando e já pode fundir códigos

• 16 de Junho de 2005 - É oficialmente usado como SCM para Linux;

• Sistema de Controle de Versão distribuído;

• Mais Rápido e eficiente;

• Melhores serviços de hospedagem de repositórios: github.com, bitbucket.com , gitlab.com, assembla.com , codebasehq.com

09/04/2016Presentation licenced under non-commercial creative

commons 3.0

Page 10: Git hub and Laravel

Diretório de Trabalho e Índices

09/04/2016Presentation licenced under non-commercial creative

commons 3.0

Fonte: https://backlogtool.com/git-guide

Page 11: Git hub and Laravel

COMMITS, BRANCHES e TAGS

• Commit é o estado do repositório corrente, o nome dado será pelo hash SHA1 do conteúdo do repositório. O comando utiliza se para passar o estado indexado para o repositório local.

• Branches são usados para criar uma nova linha de desenvolvimento ou funcionalidades isoladas, por defeito todo o projeto vem com master branch.

• Tags atribui um nome explicativo (Etiqueta) a uma versão específica do repositório. São imutáveis. (Uma branch que não se altera).

09/04/2016Presentation licenced under non-commercial creative

commons 3.0

Page 12: Git hub and Laravel

Clone ,Pull e Push

• Clone – Cria uma instancia local do repositório completo.

• Pull - copia as alterações de uma repositório remoto para um local. É usado para sincronização entre duas instancias de repositório.

• Push - cópias mudanças de uma instância de repositório local para um remoto. Isto é usado para armazenar as alterações permanentemente no repositório Git.

09/04/2016Presentation licenced under non-commercial creative

commons 3.0

Page 13: Git hub and Laravel

Git Commands

09/04/2016Presentation licenced under non-commercial creative

commons 3.0

Page 14: Git hub and Laravel

• Inicializar Git (Criar um repositório do seu projeto, uma pasta .git com todas as informações do repositório )

•git init

•Adicionar todos os arquivos no projeto

•git add .

•git commit –m ”mensagem da alteração”

•Ao alterar algum ficheiro, antes de commit

•git add nome_ficheiro_ou_pasta

09/04/2016Presentation licenced under non-commercial creative

commons 3.0

Page 15: Git hub and Laravel

•Verificar o que aconteceu

•git status

•git log

•Adicionar servidor para repositório remoto

•git remote add hostname hosturl

•Enviar todas alterações do seu repositório

•git push hostname branchname

09/04/2016Presentation licenced under non-commercial creative

commons 3.0

Page 16: Git hub and Laravel

•Trabalhando com varias versões em paralelo

•git branch novoramo• Cria uma nova branch

•git checkout novoramo• Muda para a branch novoramo

•Juntar os ramos

•git merfe novoramo• Vai juntar o novoramo com o ramo que estiver

09/04/2016Presentation licenced under non-commercial creative

commons 3.0

Page 17: Git hub and Laravel

Recapitulando

09/04/2016Presentation licenced under non-commercial creative

commons 3.0

Page 18: Git hub and Laravel

09/04/2016Presentation licenced under non-commercial creative

commons 3.0

Page 19: Git hub and Laravel

Próximo Passos

• Criar um repositório no GitHub para o projeto do treinamento e enviar o link do projeto para a equipa de formação.

• https://guides.github.com/activities/hello-world/

• Git Flow ???

09/04/2016Presentation licenced under non-commercial creative

commons 3.0

Page 20: Git hub and Laravel

Dados do codeafrica.org

09/04/2016Presentation licenced under non-commercial creative

commons 3.0

Page 21: Git hub and Laravel

09/04/2016Presentation licenced under non-commercial creative

commons 3.0

Page 22: Git hub and Laravel

Referencias

• Loeliger, Jon, and Matthew McCullough. Version Control withGit: Powerful tools and techniques for collaborative software development. " O'Reilly Media, Inc.", 2012.

"Git - The Simple Guide - No Deep Shit!". Rogerdudler.github.io. N.p., 2016. Web. 9 Apr. 2016.

"Git Tutorial". www.tutorialspoint.com. N.p., 2016. Web. 9 Apr. 2016.

09/04/2016Presentation licenced under non-commercial creative

commons 3.0

Page 23: Git hub and Laravel

ModelsConceitos

Primeiro CRUD

09/04/2016Presentation licenced under non-commercial creative

commons 3.023

Page 24: Git hub and Laravel

Models

• Diferentemente do que muita gente pensa, o conceito deModels é bem abrangente. Quando falamos de Models,estamos a falar de um participante que terá o objetivo de fazerqualquer consumo e transação de dados em nossa aplicação.

• Vamos imaginar que desenvolveremos uma simples aplicaçãoque fará a exibição de diversas informações sobre tweets.

• Nesse caso, quem fará o consumo e a gestão das informações(dados) dos tweets para nossa aplicação, será exatamentenossa camada Model.

• Entendam, quando falamos em Model, falamos em dados!

09/04/2016Presentation licenced under non-commercial creative

commons 3.024

Page 25: Git hub and Laravel

Models

• Quando falamos na camada de Model, muita gente já faz aassociação direta de que são os Models que “cuidam”diretamente da parte da base de dados de nossa aplicação.

• Na realidade, a parte da base de dados, é apenas uma, dasmais diversas fontes de dados que nossa Model pode gerir,todavia, como é extremamente comum termos bases de dadosatreladas as nossas aplicações, a associação entre Models ebase de dados fica, muito mais evidente do que outras fontesde dados.

09/04/2016Presentation licenced under non-commercial creative

commons 3.025

Page 26: Git hub and Laravel

Models

• De qualquer forma, sempre tenha em mente que quandoestamos a falar de Models, estamos falando de qualquer tipode fonte de dados, como:Webservice / API

base de dados

Arquivos textos

entre outros

09/04/2016Presentation licenced under non-commercial creative

commons 3.026

Page 27: Git hub and Laravel

Models no Laravel

• Normalmente, quando estamos a falar de Models no Laravel,estamos falando de como faremos acesso as informações dabase de dados em nossa aplicação, bem como faremos adisponibilização e transações com tais informações.

• O Laravel possui um ORM chamado de Eloquent, o qual faz arelação direta entre as nossas classes de Model com nossastabelas de base de dados.

• Acredito que o grande goal do Eloquent, é a sua excepcionalfacilidade de uso, nesse ponto, mostraremos brevemente comovocê poderá fazer uso dessa poderosa ferramenta.

09/04/2016Presentation licenced under non-commercial creative

commons 3.027

Page 28: Git hub and Laravel

Configurando um base de dados

• Como quase tudo no Laravel, fazer a configuração de um basede dados é algo extremamente simples. Basicamente, vocêterá de definir qual será o SGDB a ser utilizado e passar asinformações de acesso e/ou credenciais.

• O arquivo responsável por conter todos os SGDBs pré-configurados no Laravel é:

config/database.php

• Ele é composto por um array, onde facilmente poderá sermodificado.

09/04/2016Presentation licenced under non-commercial creative

commons 3.028

Page 29: Git hub and Laravel

Criando nosso primeiro Model

• Criar um model no Laravel é algo extremamente simples, basta criaruma classe que estenda de IlluminateDatabaseEloquentModel,por outro lado, o framework nos traz diversas facilidades para quecriemos nossos models, utilizando a linha de comando com oArtisan. Basta correr o comando:

php artisan make:model Produto

E terá o seguinte resultado:

Model created successfully.

Created Migration: 2016_04_09_213916_create_produtos_table

09/04/2016Presentation licenced under non-commercial creative

commons 3.029

Page 30: Git hub and Laravel

Criando nosso primeiro Model

O Artisan, acaba de criar dois arquivos:

• Produto.php, dentro de nossa pasta app

• 2015_04_20_213916_create_produtos_table.php, dentro da pasta database/migrations

09/04/2016Presentation licenced under non-commercial creative

commons 3.030

Page 31: Git hub and Laravel

Falando brevemente sobre Migrations

• O Laravel possui o recurso de migrations, onde tem o objetivode gerir cada mudança estrutural da nossa base de dados, ouseja, para cada tabela, coluna, índice, criados em nosso basede dados, podemos ter uma migration para realizar essaoperação de forma automática.

• Um ponto bem interessante sobre migrations, é que temosexatamente cada versão da estrutura de nossa base de dados,logo, se sentirmos a necessidade, podemos facilmente dar um“roll back”.

• Seguinte nosso exemplo do model criado: Produto, a migration2016_04_09_213916_create_produtos_table foi criada:

09/04/2016Presentation licenced under non-commercial creative

commons 3.031

Page 32: Git hub and Laravel

Falando brevemente sobre Migrations

09/04/2016Presentation licenced under non-commercial creative

commons 3.032

Page 33: Git hub and Laravel

Falando brevemente sobre Migrations

• Se você perceber, temos dois métodos principais: up() edown(). O método up é executado quando a migration corre, jáo método down, é executado cada vez que damos um rollback, nessa mesma migration.

• Nesse nosso caso, perceba que a o método up está sendoresponsável por uma tabela chamada de produtos.

• Por padrão, tal tabela possuirá uma coluna: ID, auto_incremente outras duas colunas referentes a data / hora de inserção ealteração de um registro (created_at e updated_at).

• Para que possamos seguir com nosso exemplo, adicionareimais duas colunas em nossa tabela produtos:

09/04/2016Presentation licenced under non-commercial creative

commons 3.033

Page 34: Git hub and Laravel

Falando brevemente sobre Migrations

09/04/2016Presentation licenced under non-commercial creative

commons 3.034

Feita essa nossa alteração, basta apenas corrermos os seguinte comandos via

Artisan:

Page 35: Git hub and Laravel

Falando brevemente sobre Migrations

• O comando migrate:install, cria uma tabela em nosso base dedados para poder gerir nossas migrations.

• Já o comando migrate, executa todas as migrations disponíveisem nossa aplicação.

• Pronto! Já temos uma tabela de base de dados criada, prontapara ser utilizada em conjunto com nosso Model Produto.

09/04/2016Presentation licenced under non-commercial creative

commons 3.035

Page 36: Git hub and Laravel

Brincando com nosso Model

• Se você abrir o arquivo de nosso Model, localizado em:app/Produto.php, você terá o seguinte resultado:

09/04/2016Presentation licenced under non-commercial creative

commons 3.036

Page 37: Git hub and Laravel

Brincando com nosso Model

• Apesar de ser um arquivo extremamente pequeno, ele estendede uma classe chamada Model, que possui uma infinidade derecursos para você manipular sua tabela de base de dados.

• Vamos brincar um pouco com nosso Model, utilizando a otinker, um console interativo, disponibilizado pelo próprioLaravel.

09/04/2016Presentation licenced under non-commercial creative

commons 3.037

Page 38: Git hub and Laravel

Brincando com nosso Model

• Perceba que ao acessarmos o tinker, criamos um objetoProduto (baseado em nosso Model), e definimos dois atributos:nome e descricao; depois disso, apenas executamos o métodosave() e pronto. Já temos nosso primeiro registro gravado emnossa base de dados!

• Realmente é MUITO simples trabalhar com Models baseadosno Eloquent.

Mas nos cá no Training vamos um pouco além!

09/04/2016Presentation licenced under non-commercial creative

commons 3.038

Page 39: Git hub and Laravel

Brincando com nosso Model

09/04/2016Presentation licenced under non-commercial creative

commons 3.039

• Ao chamarmos estaticamente o método all() de nosso model, perceba que recebemos uma

coleção de modelos Produto (Eloquent), que nesse caso, é o produto que acabamos de inserir no

base de dados.

• Se quisermos, podemos selecionar apenas o Produto desejado, utilizando o método find().

Page 40: Git hub and Laravel

Brincando com nosso Model

• Nesse caso, o Model Produto, com o ID 1, foi atribuído emnossa variável $livro.

• Podemos agora, fazer modificações nesse objeto e persisti-lasnovamente no base de dados:

09/04/2016Presentation licenced under non-commercial creative

commons 3.040

Pronto, mudamos facilmente a descrição de nosso produto.

Vamos listar novamente os produtos, para ver se nossa modificação foi

refletida:

Page 41: Git hub and Laravel

Brincando com nosso Model

09/04/2016Presentation licenced under non-commercial creative

commons 3.041

Page 42: Git hub and Laravel

Utilizando nosso Model no Controller

• Agora que já demos nossos primeiros passos com nosso Model, vamosexibir tais informações no browser do usuário, seguindo exatamente ofluxo que vimos anteriormente, todavia, aplicando agora nossosconhecimentos sobre Models.

09/04/2016Presentation licenced under non-commercial creative

commons 3.042

• Perceba que estamos atribuindo para a variável produtos, uma coleção de

produtos trazida pelo nosso Model, depois disso, apenas atribuímos tal

coleção para nossa View (produtos.blade.php).

Page 43: Git hub and Laravel

Utilizando nosso Model no Controller

09/04/2016Presentation licenced under non-commercial creative

commons 3.043

Page 44: Git hub and Laravel

Utilizando nosso Model no Controller

09/04/2016Presentation licenced under non-commercial creative

commons 3.044

Vejam que utilizamos as tags do PHP para fazermos o foreach; para facilitar

nossa vida, podemos utilizar o recurso de foreach do próprio Blade para facilitar!

Page 45: Git hub and Laravel

Utilizando nosso Model no Controller

09/04/2016Presentation licenced under non-commercial creative

commons 3.045

Page 46: Git hub and Laravel

Blade

09/04/2016Presentation licenced under non-commercial creative

commons 3.046

Page 47: Git hub and Laravel

Contexto

Problema

•Todas as paginas HTML tem formato similar, como o rodapé, o cabeçalho, etc. E é custoso repetir o mesmo código varias vezes.

Solução

•Criar layouts blade

09/04/2016Presentation licenced under non-commercial creative

commons 3.047

Page 48: Git hub and Laravel

Como é feito?

No diretório da instalação do Laravel, verifique o ficheiro ../resources/view/welcome.blade.php

09/04/2016Presentation licenced under non-commercial creative

commons 3.048

Page 49: Git hub and Laravel

09/04/2016Presentation licenced under non-commercial creative

commons 3.049

Page 50: Git hub and Laravel

• Criamos os diretórios Layouts e Includes para adicionarmos os layouts das paginas e o include para os conteúdos mais usados pelos site.

• mkdir layouts

• mkdir includes

09/04/2016Presentation licenced under non-commercial creative

commons 3.050

Page 51: Git hub and Laravel

• O código do cabeçalho é genérico o que podemos incluir num dos ficheiros para melhor ser reutilizado. Que vamos por no includes. ../view/includes/head.blade.php

09/04/2016Presentation licenced under non-commercial creative

commons 3.051

Page 52: Git hub and Laravel

• Podemos criar um layout para ser usado, com a estrutura geral de HTML. No diretório layout. ../view/layout/default.blade.php

09/04/2016Presentation licenced under non-commercial creative

commons 3.052

Yield(”secção") – Mostra conteúdo de secção que tem o mesmo nome do argumento;

Include (ficheiro) – inclui o ficheiro de outro template

Page 53: Git hub and Laravel

• Vamos alterar o ficheiro welcome.blade.php de modo que use a nossa planilha e os ficheiros de inclusão ;

09/04/2016Presentation licenced under non-commercial creative

commons 3.053

@extends – acrescenta a plantinha com um layout , deve ser o primeiro elemento de um template.

@section(nome) – Inicia uma secção

@stops – termina uma secção.

Page 54: Git hub and Laravel

09/04/2016Presentation licenced under non-commercial creative

commons 3.054

• Agora no diretório do projeto é só executar php artisan serve

Page 55: Git hub and Laravel

O que mais Bladepermite ?

09/04/2016Presentation licenced under non-commercial creative

commons 3.055

Page 56: Git hub and Laravel

Mostrar variáveis de PHP

{{ $var }}

{{ $var or 'default' }}

<?php echo $var; ?>

09/04/2016Presentation licenced under non-commercial creative

commons 3.056

Page 57: Git hub and Laravel

Controle logico

@if ($hora < 12 )

Bom dia

@elseif ($hora < 20 )

Boa tarde

@else

Boa Noite

@endif

09/04/2016Presentation licenced under non-commercial creative

commons 3.057

Page 58: Git hub and Laravel

Controle logico

@unless ($idade > 18)

Pode comprar bebida alcoólica

@endunless

09/04/2016Presentation licenced under non-commercial creative

commons 3.058

Page 59: Git hub and Laravel

Comentários

{{-- Isto é um comentário --}}

Comentários em PHP serão renderizados

09/04/2016Presentation licenced under non-commercial creative

commons 3.059

Page 60: Git hub and Laravel

Controle de Estrutura For

@for ($i =1 ; $1 <= 10 ; $i++)

<p>{{ $i }} </p>

@endfor

09/04/2016Presentation licenced under non-commercial creative

commons 3.060

Page 61: Git hub and Laravel

Controle de Estrutura para Vetores

<ul>

@foreach ($items as $item)

<li>{{ $item }} </li>

@endforeach

</ul>

09/04/2016Presentation licenced under non-commercial creative

commons 3.061

Page 62: Git hub and Laravel

Controle de Estrutura para Vetores

<ul>

@foreach ($items as $name =>$item)

<li>{{name}} - {{ $item }} </li>

@endforeach

</ul>

09/04/2016Presentation licenced under non-commercial creative

commons 3.062

Page 63: Git hub and Laravel

Controle de Estrutura para Vetores

<ul>

@while ($item = array_pop($items))

<li> {{ $item }} </li>

@endwhile

</ul>

09/04/2016Presentation licenced under non-commercial creative

commons 3.063

Page 64: Git hub and Laravel

Internacionalização da aplicação

lang/en/saudacoes.php

<?php

return array(

‘Ola' => ’Hello',

’Adeus' => ’Good by’ );

?>

Welcome.blade.php

• @lang(’saudacoes.Ola')

09/04/2016Presentation licenced under non-commercial creative

commons 3.064

Page 65: Git hub and Laravel

Rumo ao primeiro CRUD

09/04/2016Presentation licenced under non-commercial creative

commons 3.065

Page 66: Git hub and Laravel

Rumo ao primeiro CRUD

• Normalmente, quem já possui uma certa experiência comdesenvolvimento web, provavelmente já está familiarizado como termo CRUD, que significa: Create, Retrieve, Update eDelete.

• O CRUD nada mais é do que um termo utilizado representandoas principais operações que podemos realizar em umaentidade, ou seja, Criar, Listar, Alterar e Remover dados.

09/04/2016Presentation licenced under non-commercial creative

commons 3.066

Page 67: Git hub and Laravel

Herdando um template

• Acredito que vocês já devem ter se antecipado e feito aseguinte pergunta: Como podemos aproveitar um template(view) padrão para todas as nossas páginas, sem queprecisemos ficar a duplicar a todo momento nosso HTML quenos serve como base de nossa aplicação?

• A resposta para essa pergunta é:

09/04/2016Presentation licenced under non-commercial creative

commons 3.067

Page 68: Git hub and Laravel

Herdando um template

• Essa é uma das grandes vantagens de você poder utilizar oBlade. O Blade possibilita que você herde suas views de umtemplate principal a fim de facilitar o reaproveitamento decódigo.

• Nossa view: produtos.blade.php encontra-se da seguinteforma:

09/04/2016Presentation licenced under non-commercial creative

commons 3.068

Page 69: Git hub and Laravel

Herdando um template

09/04/2016Presentation licenced under non-commercial creative

commons 3.069

Nossa idéia, é utilizarmos um template padrão que o Laravel já nos trás para faciltiar nosso trabalho. ;)

Page 70: Git hub and Laravel

Herdando um template

• Se analisar a pasta resources/views, encontrará um arquivochamado app.blade.php, esse arquivo é o template padrãoque o Laravel 5 nos trás para que possamos utilizar como basede nossa aplicação.

• Ao abrir esse arquivo, quase no final, você encontrará aseguinte chamada: @yield(‘content’). Isso significa que secriarmos em nossa view, uma @section com o nome decontent, e herdarmos o template app.blade.php, todo oconteúdo de nossa view aparecerá exatamente no local ondetemos a chamada: @yield(‘content’).

Para facilitar o entendimento, façamos isso na prática:

09/04/2016Presentation licenced under non-commercial creative

commons 3.070

Page 71: Git hub and Laravel

Herdando um template

09/04/2016Presentation licenced under non-commercial creative

commons 3.071

Perceba que utilizamos o comando @extends do Blade para fazer com que nossa

view produtos. blade.php possa herdar o template app.blade.php.

Em seguida, utilizamos a chamada @section(‘content’) para definir que tudo que

estiver dentro dela, será aplicado exatamente aonde temos a chamada

@yield(‘content’) no template app.blade.php. Vejamos o resultado a seguir:

Page 72: Git hub and Laravel

Herdando um template

09/04/2016Presentation licenced under non-commercial creative

commons 3.072

WOW! O Blade é mesmo mau…

Page 73: Git hub and Laravel

Fazendo a listagem em uma tabela

09/04/2016Presentation licenced under non-commercial creative

commons 3.073

Page 74: Git hub and Laravel

Fazendo a listagem em uma tabela

09/04/2016Presentation licenced under non-commercial creative

commons 3.074

Page 75: Git hub and Laravel

Criando página de “Create”

09/04/2016Presentation licenced under non-commercial creative

commons 3.075

Page 76: Git hub and Laravel

Criando página de “Create”

• Para facilitar a organização de nosso código, criaremos uma pasta chamada produtos dentro da pasta:

• resources/views, dessa forma, saberemos que todas as viewsreferentes ao nosso CRUD de produtos estarão armazenados nessa pasta.

• Também renomearemos o arquivo: resources/views/produtos.blade.php para resources/views/produtos/index.blade.php

• Nesse ponto, vamos criar o arquivo: create.blade.php:

09/04/2016Presentation licenced under non-commercial creative

commons 3.076

Page 77: Git hub and Laravel

Criando página de “Create”

09/04/2016Presentation licenced under non-commercial creative

commons 3.077

Falta registrarmos uma nova rota apontando: produtos/create para essa nossa

nova action. No arquivo routes.php faremos o seguinte registro:

Page 78: Git hub and Laravel

Criando página de “Create”

09/04/2016Presentation licenced under non-commercial creative

commons 3.078

Page 79: Git hub and Laravel

Trabalhando com formulários no Laravel

09/04/2016Presentation licenced under non-commercial creative

commons 3.079

Page 80: Git hub and Laravel

Instalando o Illuminate/Html

• Já temos nossa página produtos/create pronta e preparadapara receber nosso formulário.

• Você possui duas opções nesse momento:Criar manualmente seus formulários HTML

Utilizar a ajuda do componente Illuminate/Html do Laravel;

• Nesse nosso caso, utilizaremos a segunda opção para termosmais agilidade no processo de criação dos formulários.

• A idéia é instalarmos o pacote: Illuminate/Html

• Para instalá-lo, basta o correr o seguinte comando viacomposer. Você terá o resultado similar ao exibido a seguir:

09/04/2016Presentation licenced under non-commercial creative

commons 3.080

Page 81: Git hub and Laravel

Instalando o Illuminate/Html

09/04/2016Presentation licenced under non-commercial creative

commons 3.081

Page 82: Git hub and Laravel

Instalando o Illuminate/Html

• Teremos que registrar esse pacote como um “ServiceProvider”, dessa forma o Laravel poderá encontrar essescomponentes.

• Para fazer isso, adicionem a seguinte linha ao final do arrayproviders dentro do arquivo: config/app.php.

09/04/2016Presentation licenced under non-commercial creative

commons 3.082

Também, no mesmo arquivo, você terá que adicionar duas linhas no array de

aliases:

Page 83: Git hub and Laravel

Instalando o Illuminate/Html

09/04/2016Presentation licenced under non-commercial creative

commons 3.083

Page 84: Git hub and Laravel

Criando formulário

09/04/2016Presentation licenced under non-commercial creative

commons 3.084

Ao acessarmos nossa aplicação na rota produtos/create, aparentemente nada

terá mudado, porém, quando inspecionarmos o código fonte, poderemos

perceber que os seguintes itens foram adicionados:

Page 85: Git hub and Laravel

Criando formulário

09/04/2016Presentation licenced under non-commercial creative

commons 3.085

O Laravel, automaticamente, criou as tags <form> e ainda um elemento hidden

como um token para proteger nosso formulário contra CSRF.

Vamos agora adicionar os outros itens para nosso formulário ficar completo:

Page 86: Git hub and Laravel

Criando formulário

09/04/2016Presentation licenced under non-commercial creative

commons 3.086

Page 87: Git hub and Laravel

Criando formulário

09/04/2016Presentation licenced under non-commercial creative

commons 3.087

Page 88: Git hub and Laravel

A action “store”

• Agora que já temos nosso formulário criado, precisamos criar uma nova action que será responsável por receber a requestdo nosso form e chamar nosso Model Produto para persistir os dados.

• Também precisaremos registrar uma nova rota: produto/store.

09/04/2016Presentation licenced under non-commercial creative

commons 3.088

Também temos que realizar um pequeno ajuste em nosso arquivo

create.blade.php para apontar o form para a nossa url produtos/store.

Page 89: Git hub and Laravel

A action “store”

09/04/2016Presentation licenced under non-commercial creative

commons 3.089

Percebam que em nossa action store,

estamos a receber por parâmetro um

objeto request.

Armazenamos todas as informações

enviadas via form de nosso request na

variável $input.

Depois disso, chamamos o método

create de nosso Model Produto, para

inserir os dados na base de dados.

Em seguida, redirecionamos o usuário

para a listagem dos produtos

novamente.

Page 90: Git hub and Laravel

A action “store”

Mas a vida é uma caixinha de surpresas! Se você me acompanhou até aqui, vai se deparar seguinte erro ao submeter o formulário:

09/04/2016Presentation licenced under non-commercial creative

commons 3.090

Page 91: Git hub and Laravel

A action “store”

• O Laravel trabalha com uma pequena proteção em seusmodels contra Mass Assigment, ou seja, quando atribuimosdados em massa, como no caso de termos passado todas asinformações do form directamente.

• Nesse caso, para permitir que possamos inserir os dados doform diretamente, temos que configurar nosso Model paraaceitar a atribuição em massa de nossos dois campos: nome,descricao. Para isso, basta adicionar um atributo chamado$fillable na classe de nosso model Produto.

09/04/2016Presentation licenced under non-commercial creative

commons 3.091

Page 92: Git hub and Laravel

Validando dados

• Agora que já temos nosso formulário possibilitando a criaçãode novos registros, temos que poder validar as informaçõesque estão sendo enviadas através das requisições.

• O Laravel 5 possui um recurso que podemos chamar deRequests personalizadas, ou seja, criamos uma classe deRequest e nela informamos os itens que devem ser validados.

• Utilizaremos o artisan para gerar automaticamente essa classe:

09/04/2016Presentation licenced under non-commercial creative

commons 3.092

Page 93: Git hub and Laravel

Validando dados

09/04/2016Presentation licenced under non-commercial creative

commons 3.093

O arquivo ProdutoRequest.php foi criado na pasta app/Http/Requests:

Page 94: Git hub and Laravel

Validando dados

• Perceba que temos dois métodos nessa classe: authorize() e rules().

• O método authorize() determina se temos autorização de realizar essa request, logo, se ele retornar true, quer dizer que ela pode ser executada. Entenda que você poderá colocar a regra que quiser para permitir ou não a requisição de determinado usuário.

• Já o método rules(), é responsável por validar cada um dos dados enviados na request.

• O Laravel 5 já possui uma série de validadores padrão que podem ser encontrados em sua Documentação Oficial.

• Nesse caso, faremos as seguintes alterações em nossa classe ProdutoRequest:

09/04/2016Presentation licenced under non-commercial creative

commons 3.094

Page 95: Git hub and Laravel

Validando dados

09/04/2016Presentation licenced under non-commercial creative

commons 3.095

Page 96: Git hub and Laravel

Validando dados

09/04/2016Presentation licenced under non-commercial creative

commons 3.096

Agora basta injetarmos essa classe como parâmetro em nossa action store:

Page 97: Git hub and Laravel

Validando dados

• Dessa forma, toda requisição que chegar diretamente para a actionstore, será validada pelo método rules() da request ProdutoRequest.

• Agora, se você tentar criar um novo produto pelo formulário e nãoinformar nenhum valor, você perceberá que não será redirecionadopara a listagem de produtos e, aparentemente, nada acontece.

• Só que na realidade, a nossa action store nem chegou a serexecutada, uma vez que a requisição foi interrompida quando oProdutoRequest fez a validação que não retornou de forma positiva.

• Precisamos também informar ao usuário, quais informações estãoincorretas e/ou faltantes, nesse caso, trabalharemos com a variável$errors, que armazena todos os erros de validação encontrados.

• Adicionaremos o seguinte trecho de código no arquivocreate.blade.php, verificando se há algum erro para se exibido, casopositivo, exibiremos os erros em uma lista:

09/04/2016Presentation licenced under non-commercial creative

commons 3.097

Page 98: Git hub and Laravel

Validando dados

09/04/2016Presentation licenced under non-commercial creative

commons 3.098

Page 99: Git hub and Laravel

Validando dados

09/04/2016Presentation licenced under non-commercial creative

commons 3.099

Page 100: Git hub and Laravel

Removendo registro

09/04/2016Presentation licenced under non-commercial creative

commons 3.0100

Quando você acessar por exemplo: http:://localhost:8000/produtos/1/destroy, ele

fará, automaticamente, a exclusão do produto, cujo ID seja igual a 1.

Page 101: Git hub and Laravel

Editando registro

• O processo de edição de um registro é muito similar ao dealteração, principalmente se formos analisar a camada devisão.

• O primeiro passo para fazer a edição de um registro, éentender o padrão das URIs que vamos utilizar

09/04/2016Presentation licenced under non-commercial creative

commons 3.0101

O padrão da rota é muito similar ao do destroy, porém, estamos a

encaminhar o request para a action edit, para a mesma de trazer o

formulário de edição, e a action update para efetivar a alteração na

base de dados.

Page 102: Git hub and Laravel

Editando registro

09/04/2016Presentation licenced under non-commercial creative

commons 3.0102

Vamos agora criar a action edit:

Veja que é um método extremamente simples, que pega o produto através do

método find, e retorna o produto encontrado para nossa view.

Nesse ponto, temos apenas que criar nosso arquivo: edit.blade.php, dentro da

pasta

resources/views/produtos

Page 103: Git hub and Laravel

Editando registro

09/04/2016Presentation licenced under non-commercial creative

commons 3.0103

Page 104: Git hub and Laravel

Editando registro

Nesse caso, fizemos poucas alterações em relação ao arquivo create.blade.php.

Alteramos o título da página para Editando Produto: Nome do produto

A action do form para: produtos/update

O Method do form de POST para PUT

O valor padrão dos campos dos formulários. Ex:

09/04/2016Presentation licenced under non-commercial creative

commons 3.0104

Page 105: Git hub and Laravel

Editando registro

09/04/2016Presentation licenced under non-commercial creative

commons 3.0105

Page 106: Git hub and Laravel

Editando registro

09/04/2016Presentation licenced under non-commercial creative

commons 3.0106

Estão lembrados que mudamos o method do form de POST para PUT? Veja

abaixo, o código fonte gerado pelo formulário =)

• Perceba que o Laravel gerou automaticamente um campo hidden chamado

_method com o valor de PUT. Apesar de nosso browser enviar a requisição

via POST, o Laravel está a aguardar uma requisição do tipo PUT, e nesse

caso, ele fará a leitura do valor enviado pelo _method para se adequar.

• Falta apenas implementarmos nosso método de update para realizarmos a

alteração no base de dados.

Page 107: Git hub and Laravel

Editando registro

09/04/2016Presentation licenced under non-commercial creative

commons 3.0107

Page 108: Git hub and Laravel

Para Proxima Semana

• Criar os formularios em Laravel e apresentar a todos naproxima semana!

09/04/2016Presentation licenced under non-commercial creative

commons 3.0108