tag:blogger.com,1999:blog-338520022024-03-14T09:37:03.419-03:00KÊNIA FERREIRA BLOGTecnologia e outros assuntinhos.Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.comBlogger250125tag:blogger.com,1999:blog-33852002.post-2409657715777415842023-12-11T23:45:00.000-03:002023-12-11T23:45:01.885-03:00#1 - O que é TDD? <p>TDD é a sigla para Test-Driven Development, que significa Desenvolvimento Guiado por Testes em português.</p><p>Consiste em escrever testes automatizados antes do código da aplicação. </p><p>É uma técnica de desenvolvimento de software que se baseia em um ciclo curto de repetições.</p><p>Os testes auxiliam na detecção e correção de falhas e bugs que possam comprometer a qualidade e o desempenho do software. Após a criação dos testes, o desenvolvedor elabora o código da aplicação e realiza a refatoração, que consiste em melhorar o código sem alterar sua funcionalidade. O TDD está inserido na metodologia ágil de desenvolvimento de software, que tem como objetivo entregar software de forma rápida e eficiente, com foco na satisfação do cliente e na flexibilidade às mudanças.</p>Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com0tag:blogger.com,1999:blog-33852002.post-80020305807806518002023-12-11T23:44:00.003-03:002023-12-11T23:44:55.963-03:00#2 - Testes Unitários X Testes De Integração X Testes De Sistema<p>O teste de software pode envolver diversas fases.</p><p>Os <b>testes Unitários</b> testam cada módulo individualmente.</p><p>No <b>teste de integração</b>, o desenvolvedor integra e testa vários módulos do software em conjunto, para verificar se eles se comunicam bem entre si e se satisfazem os requisitos funcionais, de desempenho e de confiabilidade do sistema. O teste de integração também possibilita identificar e resolver erros de interface entre os módulos, que podem prejudicar a qualidade e o funcionamento do software. Existem diferentes estratégias de teste de integração, como bottom-up, top-down, sandwich e big bang, que estabelecem a ordem e a forma de integrar os módulos.</p><p>No <b>teste de sistema</b>, a ideia é testar o software como um todo em um ambiente que simula o ambiente de produção. </p><p>Caso esses três tipos de testes sejam utilizados num mesmo projeto, essa seria a ordem de execução:</p><p><b>1 - Testes Unitários</b></p><p><b>2 - Teste de integração</b></p><p><b>3 - Teste de sisema</b></p>Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com0tag:blogger.com,1999:blog-33852002.post-72025646494932645172023-12-11T23:44:00.002-03:002023-12-11T23:44:45.747-03:00#3 - O que é o PhpUnit?<p>O PHPUnit é um framework para testes unitários em PHP.</p><p>Esse framework segue a arquitetura xUnit para possibilitar o desenvolvimento de testes unitários automatizados que verificam o funcionamento e os requisitos esperados de cada unidade do código de forma isolada. O PHPUnit facilita a criação e a execução dos testes unitários, usando classes e métodos específicos para definir e executar os testes. Além disso, o PHPUnit conta com recursos para verificar os resultados dos testes, gerar relatórios de cobertura de código e integrar os testes com outras ferramentas de desenvolvimento.</p><div>Site Oficial: <a href="https://phpunit.de/" target="_blank">https://phpunit.de/</a></div>Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com0tag:blogger.com,1999:blog-33852002.post-73797832862045330282023-12-11T23:44:00.000-03:002023-12-11T23:44:14.903-03:00#4 - Como Instalar o PhpUnit<p> Acesse o site oficial:</p><p><a target="_blank" href="https://phpunit.de/">https://phpunit.de/</a></p><p>Clique em <b>Take the first steps</b>:</p><p><br /></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1Ygtqhxmv_MBYiBLZXOBENnIeZbtgXQ7_UWNTSun3J2vZwZNyVS8Jt7RJyip1XgCNHRG1U1hTZXuJTGKT4W4PlgUorK0H-OsG3FYOtFmWKEhmwl97Km2Nud7tRl1daFWzsMxTh_VaTW_1JKL6e2Ac4Kf2wkcAoBC5Tf3wVRujiext9IXWx4oAtQ/s1742/1PrimeiroPasso.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="722" data-original-width="1742" height="166" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1Ygtqhxmv_MBYiBLZXOBENnIeZbtgXQ7_UWNTSun3J2vZwZNyVS8Jt7RJyip1XgCNHRG1U1hTZXuJTGKT4W4PlgUorK0H-OsG3FYOtFmWKEhmwl97Km2Nud7tRl1daFWzsMxTh_VaTW_1JKL6e2Ac4Kf2wkcAoBC5Tf3wVRujiext9IXWx4oAtQ/w400-h166/1PrimeiroPasso.jpg" width="400" /></a></div><br /><p>Copie o comando para instalar a versão mais atualizada do PHPUnit no seu projeto via Composer:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5R0ED7kNt2CzCToSTZX7nmeLuRZs8cO8MA-PJT7Ic0etwnOxDV-xjl3gtkuRC5jEEsO2r0ORL06svHKDAhXyaChTag1oKSjAHteGX5IOUIFmGARTzk-j3hrKV2uVFwLv4Ohh1GYKpLiX1RHWUbem3WvHP6khbOF5FzjO6BytOurlnjnk22raxUQ/s1760/2SegundoPasso.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="714" data-original-width="1760" height="163" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5R0ED7kNt2CzCToSTZX7nmeLuRZs8cO8MA-PJT7Ic0etwnOxDV-xjl3gtkuRC5jEEsO2r0ORL06svHKDAhXyaChTag1oKSjAHteGX5IOUIFmGARTzk-j3hrKV2uVFwLv4Ohh1GYKpLiX1RHWUbem3WvHP6khbOF5FzjO6BytOurlnjnk22raxUQ/w400-h163/2SegundoPasso.jpg" width="400" /></a></div><br /><p>No caso do nosso exemplo:</p><p><b>composer require --dev phpunit/phpunit ^10</b></p><p>Após a instalação, a versão instalada deve contar no arquivo composer.json do seu projeto:</p><div style="background-color: #1f1f1f; color: #cccccc; font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;"><div>{</div><div> <span style="color: #9cdcfe;">"require-dev"</span>: {</div><div> <span style="color: #9cdcfe;">"phpunit/phpunit"</span>: <span style="color: #ce9178;">"10"</span></div><div> }</div><div>}</div></div>Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com0tag:blogger.com,1999:blog-33852002.post-30808995837069789372023-12-11T23:43:00.000-03:002023-12-11T23:43:27.129-03:00#5 - Instanciando e Utilizando o PhpUnit<p>Para exemplificar o uso do PHP Unit na prática vamos ver o exemplo simples de uma classe chamada Pessoa:</p><div style="background-color: #1f1f1f; color: #cccccc; font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;"><div><span style="color: #6a9955;">// Classe Pessoa que representa uma pessoa com nome e idade</span></div><div><span style="color: #569cd6;">class</span><span style="color: #d4d4d4;"> </span><span style="color: #4ec9b0;">Pessoa</span><span style="color: #d4d4d4;"> {</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #6a9955;">// Atributos privados da classe</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">private</span><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$nome</span><span style="color: #d4d4d4;">;</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">private</span><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$idade</span><span style="color: #d4d4d4;">;</span></div><div><span style="color: #d4d4d4;"> </span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #6a9955;">// Construtor da classe que recebe o nome e a idade da pessoa</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">public</span><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">function</span><span style="color: #d4d4d4;"> </span><span style="color: #dcdcaa;">__construct</span><span style="color: #d4d4d4;">(</span><span style="color: #9cdcfe;">$nome</span><span style="color: #d4d4d4;">, </span><span style="color: #9cdcfe;">$idade</span><span style="color: #d4d4d4;">) {</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">$this</span><span style="color: #d4d4d4;">-></span><span style="color: #9cdcfe;">nome</span><span style="color: #d4d4d4;"> = </span><span style="color: #9cdcfe;">$nome</span><span style="color: #d4d4d4;">;</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">$this</span><span style="color: #d4d4d4;">-></span><span style="color: #9cdcfe;">idade</span><span style="color: #d4d4d4;"> = </span><span style="color: #9cdcfe;">$idade</span><span style="color: #d4d4d4;">;</span></div><div><span style="color: #d4d4d4;"> }</span></div><div><span style="color: #d4d4d4;"> </span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #6a9955;">// Método público que retorna o nome da pessoa</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">public</span><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">function</span><span style="color: #d4d4d4;"> </span><span style="color: #dcdcaa;">getNome</span><span style="color: #d4d4d4;">() {</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #c586c0;">return</span><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">$this</span><span style="color: #d4d4d4;">-></span><span style="color: #9cdcfe;">nome</span><span style="color: #d4d4d4;">;</span></div><div><span style="color: #d4d4d4;"> }</span></div><div><span style="color: #d4d4d4;"> </span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #6a9955;">// Método público que retorna a idade da pessoa</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">public</span><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">function</span><span style="color: #d4d4d4;"> </span><span style="color: #dcdcaa;">getIdade</span><span style="color: #d4d4d4;">() {</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #c586c0;">return</span><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">$this</span><span style="color: #d4d4d4;">-></span><span style="color: #9cdcfe;">idade</span><span style="color: #d4d4d4;">;</span></div><div><span style="color: #d4d4d4;"> }</span></div><div><span style="color: #d4d4d4;"> </span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #6a9955;">// Método público que verifica se a pessoa é maior de idade</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">public</span><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">function</span><span style="color: #d4d4d4;"> </span><span style="color: #dcdcaa;">isMaiorDeIdade</span><span style="color: #d4d4d4;">() {</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #c586c0;">return</span><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">$this</span><span style="color: #d4d4d4;">-></span><span style="color: #9cdcfe;">idade</span><span style="color: #d4d4d4;"> >= </span><span style="color: #b5cea8;">18</span><span style="color: #d4d4d4;">;</span></div><div><span style="color: #d4d4d4;"> }</span></div><div><span style="color: #d4d4d4;">}</span></div></div><div><br /></div>
Agora vamos ver como seria sua classe de testes com o PHP Unit:<div><br /></div><div><div style="background-color: #1f1f1f; color: #cccccc; font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;"><div><span style="color: #6a9955;">//Precisamos informar que a classe vai utilizar o PHP Unit</span></div><div><span style="color: #569cd6;">use</span><span style="color: #d4d4d4;"> PHPUnit\Framework\</span><span style="color: #4ec9b0;">TestCase</span><span style="color: #d4d4d4;">;</span></div><br /><div><span style="color: #6a9955;">// Classe de teste herda de PHPUnit\Framework\TestCase</span></div><div><span style="color: #569cd6;">class</span><span style="color: #d4d4d4;"> </span><span style="color: #4ec9b0;">PessoaTest</span><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">extends</span><span style="color: #d4d4d4;"> </span><span style="color: #4ec9b0;">TestCase</span><span style="color: #d4d4d4;"> {</span></div><br /><div><span style="color: #d4d4d4;"> </span><span style="color: #6a9955;">// Método de teste que verifica se o construtor da classe Pessoa funciona corretamente</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">public</span><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">function</span><span style="color: #d4d4d4;"> </span><span style="color: #dcdcaa;">testConstrutor</span><span style="color: #d4d4d4;">() {</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #6a9955;">// Cria uma instância da classe Pessoa com o nome "João" e a idade 25</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$pessoa</span><span style="color: #d4d4d4;"> = </span><span style="color: #569cd6;">new</span><span style="color: #d4d4d4;"> </span><span style="color: #4ec9b0;">Pessoa</span><span style="color: #d4d4d4;">(</span><span style="color: #ce9178;">"João"</span><span style="color: #d4d4d4;">, </span><span style="color: #b5cea8;">25</span><span style="color: #d4d4d4;">);</span></div><div><span style="color: #d4d4d4;"> </span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #6a9955;">// Verifica se o nome da pessoa é "João"</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">$this</span><span style="color: #d4d4d4;">-></span><span style="color: #dcdcaa;">assertEquals</span><span style="color: #d4d4d4;">(</span><span style="color: #ce9178;">"João"</span><span style="color: #d4d4d4;">, </span><span style="color: #9cdcfe;">$pessoa</span><span style="color: #d4d4d4;">-></span><span style="color: #dcdcaa;">getNome</span><span style="color: #d4d4d4;">());</span></div><div><span style="color: #d4d4d4;"> </span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #6a9955;">// Verifica se a idade da pessoa é 25</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">$this</span><span style="color: #d4d4d4;">-></span><span style="color: #dcdcaa;">assertEquals</span><span style="color: #d4d4d4;">(</span><span style="color: #b5cea8;">25</span><span style="color: #d4d4d4;">, </span><span style="color: #9cdcfe;">$pessoa</span><span style="color: #d4d4d4;">-></span><span style="color: #dcdcaa;">getIdade</span><span style="color: #d4d4d4;">());</span></div><div><span style="color: #d4d4d4;"> }</span></div><div><span style="color: #d4d4d4;"> </span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #6a9955;">// Método de teste que verifica se o método isMaiorDeIdade da classe Pessoa funciona corretamente</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">public</span><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">function</span><span style="color: #d4d4d4;"> </span><span style="color: #dcdcaa;">testIsMaiorDeIdade</span><span style="color: #d4d4d4;">() {</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #6a9955;">// Cria uma instância da classe Pessoa com o nome "Maria" e a idade 17</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$pessoa</span><span style="color: #d4d4d4;"> = </span><span style="color: #569cd6;">new</span><span style="color: #d4d4d4;"> </span><span style="color: #4ec9b0;">Pessoa</span><span style="color: #d4d4d4;">(</span><span style="color: #ce9178;">"Maria"</span><span style="color: #d4d4d4;">, </span><span style="color: #b5cea8;">17</span><span style="color: #d4d4d4;">);</span></div><div><span style="color: #d4d4d4;"> </span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #6a9955;">// Verifica se a pessoa é menor de idade</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">$this</span><span style="color: #d4d4d4;">-></span><span style="color: #dcdcaa;">assertFalse</span><span style="color: #d4d4d4;">(</span><span style="color: #9cdcfe;">$pessoa</span><span style="color: #d4d4d4;">-></span><span style="color: #dcdcaa;">isMaiorDeIdade</span><span style="color: #d4d4d4;">());</span></div><div><span style="color: #d4d4d4;"> </span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #6a9955;">// Cria uma instância da classe Pessoa com o nome "Pedro" e a idade 18</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$pessoa</span><span style="color: #d4d4d4;"> = </span><span style="color: #569cd6;">new</span><span style="color: #d4d4d4;"> </span><span style="color: #4ec9b0;">Pessoa</span><span style="color: #d4d4d4;">(</span><span style="color: #ce9178;">"Pedro"</span><span style="color: #d4d4d4;">, </span><span style="color: #b5cea8;">18</span><span style="color: #d4d4d4;">);</span></div><div><span style="color: #d4d4d4;"> </span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #6a9955;">// Verifica se a pessoa é maior de idade</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">$this</span><span style="color: #d4d4d4;">-></span><span style="color: #dcdcaa;">assertTrue</span><span style="color: #d4d4d4;">(</span><span style="color: #9cdcfe;">$pessoa</span><span style="color: #d4d4d4;">-></span><span style="color: #dcdcaa;">isMaiorDeIdade</span><span style="color: #d4d4d4;">());</span></div><div><span style="color: #d4d4d4;"> }</span></div><div><span style="color: #d4d4d4;">}</span></div></div><div><br /></div></div>
Note que o nome da classe de testes recebe o mesmo nome da classe testada com o final Test: PessoaTest.<div><br /></div><div>Se você criar os arquivos Pessoa.php e PessoaTest.php num diretório contendo o PhpUnit e rodar o comando phpunit PessoaTest.php você deverá observar o seguinte resultado:</div><div><br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwchidnYvXWrT-JTyTNHbXr7VlQ33WVvSGeFFbNzeIJ7H0lld8TkhFQLhRvW0S61EhOyItHuK9X1UxXtwa27Wo0u7Xb48BbO3LY7qeYwREEAhyphenhyphenOQe-Y5cQwhrY7pU0Y_v-dIy5bYveQ6XOoBp3YOZuBcP8Ppj_5El2AmdHBZC-i_yoeYkvbQZeVQ/s518/ResultadoTeste.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="173" data-original-width="518" height="134" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwchidnYvXWrT-JTyTNHbXr7VlQ33WVvSGeFFbNzeIJ7H0lld8TkhFQLhRvW0S61EhOyItHuK9X1UxXtwa27Wo0u7Xb48BbO3LY7qeYwREEAhyphenhyphenOQe-Y5cQwhrY7pU0Y_v-dIy5bYveQ6XOoBp3YOZuBcP8Ppj_5El2AmdHBZC-i_yoeYkvbQZeVQ/w400-h134/ResultadoTeste.jpg" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><br /></div></div></div>
Confira o código nesse repositório do Github:
<div><br /></div><div><a target="_blank" href="https://github.com/keniaferreira/TesteSimplesPhpUnit">https://github.com/keniaferreira/TesteSimplesPhpUnit</a></div>Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com0tag:blogger.com,1999:blog-33852002.post-80362635424189974762023-01-17T17:37:00.190-03:002023-09-11T02:25:09.294-03:00Como Funcionam As Urnas Eletrônicas?<p> </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg19yMT68tPeeB0lMvFv348vigiXg7J7xS0vRv0F8X87v_b0gNVJg2dW3DfMo1qXnPtJzeD9i7MzkTQ1Btj3VwgOI9ehKu6zO9UaQ_CHR2zHt6hPBrDMMZjfdhyTT3t1VHpSAFW_hDoPIfxMfVPy391JltEp_qcjLnLvYtxQ6X1wMmPlcPCPB8/s960/electronic-ballot-box-5662235_960_720.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="381" data-original-width="960" height="127" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg19yMT68tPeeB0lMvFv348vigiXg7J7xS0vRv0F8X87v_b0gNVJg2dW3DfMo1qXnPtJzeD9i7MzkTQ1Btj3VwgOI9ehKu6zO9UaQ_CHR2zHt6hPBrDMMZjfdhyTT3t1VHpSAFW_hDoPIfxMfVPy391JltEp_qcjLnLvYtxQ6X1wMmPlcPCPB8/s320/electronic-ballot-box-5662235_960_720.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div>As urnas eletrônicas são dispositivos de votação que permitem aos eleitores escolher candidatos ou opções de voto usando um dispositivo eletrônico, em vez de usar cédulas de papel. Os eleitores geralmente escolhem seus candidatos ou opções de voto pressionando botões ou tocando em tela sensível ao toque na tela da urna. A urna eletrônica registra então o voto e armazena-o em uma memória interna. Ao final da votação, os votos são contabilizados eletronicamente e os resultados podem ser transmitidos para uma central de computação para análise e relatórios.<p></p><p><b>O primeiro país a utilizar urnas eletrônicas em eleições gerais foi o Brasil, em 1989</b>. Foi realizada a primeira eleição geral com urnas eletrônicas no estado de São Paulo, a mais populosa e rica região do país. O sistema utilizado foi desenvolvido pela empresa brasileira <b>Procomp Informática</b>.</p><p>Posteriormente, outros países começaram a utilizar urnas eletrônicas. Hoje, muitos países usam urnas eletrônicas em suas eleições, mas a data de implementação e a forma como elas são usadas variam de país para país:</p><p></p><ul style="text-align: left;"><li>Estados Unidos</li><li>México</li><li>Venezuela</li><li>Argentina</li><li>Chile</li><li>Colômbia</li><li>Costa Rica</li><li>Equador</li><li>El Salvador</li><li>Guatemala</li><li>Honduras</li><li>Nicarágua</li><li>Panamá</li><li>Paraguai</li><li>Peru</li><li>Uruguai</li><li>Índia</li><li>África do Sul</li><li>Coreia do Sul</li><li>Filipinas</li><li>Singapura</li><li>Japão</li><li>Taiwan</li><li>França</li><li>Alemanha</li><li>Países Baixos</li><li>Espanha</li><li>Portugal</li><li>Reino Unido</li><li>Grécia</li><li>Irlanda</li></ul><p></p><p>Esta não é a lista completa e há muitos outros países que também usam urnas eletrônicas. Alguns países usam urnas eletrônicas em algumas eleições, mas não em outras. Alguns países usam urnas eletrônicas apenas em algumas regiões ou distritos eleitorais.</p><p><b>Muitos acreditam, que, nos Estados Unidos, o voto é unicamente feito por cédulas de papel, o que não é verdade.</b></p><p>O sistema de votação nos Estados Unidos é baseado em voto distrital, onde cada estado tem seus próprios regulamentos e leis de votação. A maioria dos estados usa urnas eletrônicas, mas alguns ainda usam cédulas de papel. Alguns estados permitem que os eleitores votem antecipadamente, seja por correspondência ou pessoalmente, antes do dia da eleição.</p><p>Os eleitores americanos votam em seus candidatos para cargos locais, estaduais e federais, incluindo o presidente dos Estados Unidos. O presidente é eleito através do Colégio Eleitoral, onde cada estado tem um número de eleitores correspondente ao número de membros do Congresso que o estado tem. Os eleitores votam em seus candidatos locais para o Colégio Eleitoral, e o candidato com a maioria dos votos no estado ganha todos os eleitores desse estado. O candidato que receber a maioria dos votos do Colégio Eleitoral (mais de 270) é eleito presidente.</p><p>Alguns estados também usam o sistema de voto distrital para eleger seus representantes no Congresso, onde os eleitores votam em seus candidatos para representá-los em seus distritos de votação.</p><p>Em geral, todos os cidadãos americanos com 18 anos ou mais têm o direito de votar, desde que estejam registrados para votar. O registro de eleitor é geralmente feito com as autoridades eleitorais do estado, e alguns estados requerem prova de cidadania ou residência.</p><p><span style="font-size: large;"><b>As Urnas Eletrônicas São Seguras?</b></span></p><p>As urnas eletrônicas são projetadas para serem seguras, mas existem preocupações com a segurança desses sistemas devido a possíveis falhas no software, problemas de configuração, ou mesmo ações maliciosas.</p><p>Para garantir a segurança das urnas eletrônicas, os fabricantes devem seguir normas e padrões de segurança estabelecidos para garantir a integridade e a confiabilidade dos sistemas. Além disso, os sistemas devem ser submetidos a testes rigorosos para detectar quaisquer vulnerabilidades ou falhas antes de serem usados em eleições.</p><p>Qualquer sistema eletrônico é suscetível a ataques cibernéticos e violações de segurança, por isso é importante que haja medidas de segurança adicionais em vigor, como auditorias independentes, criptografia de dados, e etc.</p><p>Além disso, alguns países têm regulamentações e leis para garantir a segurança e a transparência das eleições eletrônicas. Essas regulamentações podem incluir requisitos para a transparência do código-fonte, a capacidade de auditoria dos votos e a garantia da privacidade dos eleitores.</p><p>Em geral, as urnas eletrônicas podem ser seguras se forem projetadas e implementadas corretamente, e se forem monitoradas e mantidas de forma adequada.</p><p>Muitos brasileiros acreditam que o voto impresso seria mais adequado, por se basearem no sistema Americano de votação, porém, além do sistema de votação Americano não ser totalmente realizado por cédulas de papel, como já vimos, existem vários casos históricos de fraude eleitoral nos Estados Unidos, em níveis tanto local quanto estadual e federal. Alguns desses casos envolvem manipulação de votos, manipulação de registros eleitorais, e até mesmo compra de votos. No entanto, é importante notar que a maioria dessas fraudes foram isoladas e não afetaram significativamente os resultados gerais das eleições.</p><p>Existem também casos de fraude eleitoral acusadas em eleições recentes, incluindo a eleição presidencial de 2020, mas essas acusações foram investigadas e não foi encontrado evidência substancial para apoiar as alegações de fraude em larga escala.</p><p>Em resumo, embora existam casos históricos e atuais de fraude eleitoral nos Estados Unidos, a maioria dessas fraudes foram isoladas e não afetaram significativamente os resultados gerais das eleições. Os sistemas de votação também incluem medidas de segurança para garantir a integridade e a transparência das eleições.</p><p><span style="font-size: large;"><b>Como As Urnas São Auditadas No Brasil?</b></span></p><p>No Brasil, as auditorias das urnas eletrônicas são realizadas para verificar se os resultados registrados nas urnas eletrônicas correspondem aos votos reais.</p><p>As auditorias podem ser realizadas de várias maneiras. Algumas das formas mais comuns incluem:</p><p>Auditoria baseada nos boletins das urnas: cada urna eletrônica emite um comprovante físico do resultado da votação, o chamado Boletim de Urna (BU). Trata-se de um relatório impresso pelos mesários e tornado público logo após o encerramento da votação. Esse boletim possui o quantitativo de votos existentes que pode ser conflitado com o registro dos eleitores cadastrados naquela sessão que compareceram à votação.</p><p>Auditoria de código fonte: onde se verifica se o software usado nas urnas eletrônicas não contém quaisquer falhas ou vulnerabilidades.</p><p>Além dessas auditorias, também é comum que haja equipes de fiscalização, que acompanham o desenrolar das eleições, garantindo que todas as regras e regulamentos sejam seguidos.</p><p>Os partidos políticos no Brasil não têm acesso direto ao código-fonte das urnas eletrônicas utilizadas nas eleições. O código-fonte é considerado como informação confidencial e é mantido sob sigilo pelo Tribunal Superior Eleitoral (TSE) para evitar a possibilidade de fraudes ou ataques cibernéticos.</p><p>No entanto, os partidos políticos podem participar das auditorias realizadas no sistema eleitoral, incluindo a auditoria do código-fonte das urnas eletrônicas. Essas auditorias são realizadas por instituições independentes do governo e especializadas, como universidades e outras organizações interessadas. Além disso, os relatórios das auditorias são disponibilizados para acesso público, permitindo que os partidos políticos possam avaliar a segurança e integridade do sistema eleitoral.</p><p><span style="font-size: large;"><b>É Possível Fraudar As Eleições No Brasil?</b></span></p><p>Como já vimos, nenhum sistema eletrônico é blindado de possíveis falhas, ataques e ações maliciosas. Você já reparou que o sistema operacional que você utiliza em seu computador ou celular te notifica regularmente sobre atualizações disponíveis? Muitas dessas atualizações são para corrigir erros e falhas de segurança detectados durante o uso desses sistemas. Ainda que alguma urna tenha sido alvo de fraude ou falha em alguma eleição no Brasil, não é possível alegar que esses casos pontuais tenham impactado no resultado final dessas eleições.</p><p>Em 2020, o presidente Jair Bolsonaro ordenou que o Ministério da Defesa realizasse uma auditoria nas urnas eletrônicas utilizadas nas eleições de 2018, com o objetivo de verificar a integridade e a confiabilidade do sistema eleitoral. A auditoria foi realizada pelo Exército Brasileiro e teve o objetivo de detectar possíveis vulnerabilidades ou ameaças à segurança do sistema eleitoral. De acordo com as informações disponíveis, a auditoria não detectou nenhuma vulnerabilidade crítica no sistema eleitoral e concluiu que as urnas eletrônicas utilizadas nas eleições de 2018 foram seguras e confiáveis. O relatório final da auditoria foi entregue ao Tribunal Superior Eleitoral (TSE) e ao Ministério Público Eleitoral (MPE).</p><p>Em 2022, o ex-presidente Jair Bolsonaro, na época ainda presidente e candidato à reeleição, convocou fiscais para acompanhar as eleições no Brasil. Esses fiscais eram voluntários e foram designados para acompanhar o processo de votação e contagem de votos em diferentes locais do país. O objetivo era garantir a transparência e a integridade do processo eleitoral. Além disso, a mando do ministério da defesa, sob o comando do então presidente Jair Bolsonaro, as eleições também foram fiscalizadas pela equipe de técnicos militares das Forças Armadas.</p><p>O relatório do ministério da defesa sobre a fiscalização das urnas nas eleições de 2022, não apontou nenhuma prova contundente sobre fraudes que pudessem ter causado impactado no resultado final das eleições e, pra resumir, o relatório apontou que "dos testes de funcionalidade, realizados por meio do Teste de Integridade e do Projeto-Piloto com Biometria, não é possível afirmar que o sistema eletrônico de votação está isento da influência de um eventual código malicioso que possa alterar o seu funcionamento".</p><p>É importante destacar essa parte "<b>eventual código malicioso</b> <b>que possa alterar seu funcionamento"</b>. Como é possível realizar uma acusação de fraude se embasando nesse tipo de argumento? Na minha opinião pessoal, essa conclusão é equivalente às seguintes afirmações:</p><p>"Fui furtada dentro do ônibus. Pode ter sido a pessoa que estava do meu lado."</p><p>"Vou trabalhar todos os dias de carro. Pode ser que amanhã eu me envolva em alguma colisão."</p><p>"Meu filho não pode frequentar a escola. Pode ser que alguma outra criança implique com ele."</p>Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com0tag:blogger.com,1999:blog-33852002.post-40257617399469207512023-01-16T14:30:00.010-03:002023-01-16T14:30:00.171-03:00Inteligência artificial: a próxima fronteira da tecnologia<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHTvcIrEfvVF3BrYgvf04ZFHvhhvwWIFKqGEuLFa-jmmkZrmxCcJDi6ChZn4VgtL6YeRe3pBihZJqDRnZEm9EDitBuKTgmWjEjsyM2gs_WpNEP6ZkFQbXcb4grxMVOdvs5l5gMYZmeMEJOa12zTEzUc9JjZWQtN1PHZiVZ8R9PS572tq3ZHYU/s960/artificial-intelligence-4389372_960_720.jpg" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="640" data-original-width="960" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHTvcIrEfvVF3BrYgvf04ZFHvhhvwWIFKqGEuLFa-jmmkZrmxCcJDi6ChZn4VgtL6YeRe3pBihZJqDRnZEm9EDitBuKTgmWjEjsyM2gs_WpNEP6ZkFQbXcb4grxMVOdvs5l5gMYZmeMEJOa12zTEzUc9JjZWQtN1PHZiVZ8R9PS572tq3ZHYU/s320/artificial-intelligence-4389372_960_720.jpg" width="320" /></a></div><div>A inteligência artificial (IA) é uma das áreas mais empolgantes da tecnologia atualmente. Desde assistentes virtuais até carros autônomos, a IA está sendo implementada em uma variedade de campos e está mudando a forma como vivemos e trabalhamos.</div><div><div><br /></div><div>A IA é a capacidade de um sistema de computador de simular a inteligência humana. Isso inclui a capacidade de aprender, raciocinar e se adaptar a novas situações. A IA é alcançada através de algoritmos de aprendizado de máquina, que permitem que um sistema aprenda com dados e melhore suas habilidades ao longo do tempo.</div><div><br /></div><div>Uma das aplicações mais populares da IA é o assistente virtual. Assistência como o Google Assistente e o Amazon Alexa são capazes de entender e responder a comandos de voz e realizar tarefas para os usuários, como reproduzir música, definir lembretes e responder perguntas. Além disso, as empresas estão usando a IA para melhorar a experiência do cliente, por exemplo, no atendimento ao cliente, a IA é utilizada para fornecer respostas automatizadas e resolver problemas rapidamente.</div><div><br /></div><div>Outra área em que a IA está tendo um impacto significativo é na segurança. Sistemas de reconhecimento facial e de reconhecimento de voz estão sendo usados para autenticar usuários e impedir acesso não autorizado. Além disso, a IA está sendo usada para monitorar redes e detectar ameaças de segurança em tempo real.</div><div><br /></div><div>A IA também está sendo usada para melhorar a eficiência em muitas indústrias. Por exemplo, os carros autônomos estão sendo desenvolvidos para melhorar a segurança nas estradas e os robôs estão sendo usados em fábricas para automatizar tarefas repetitivas. Além disso, a IA está sendo usada para analisar grandes quantidades de dados e ajudar as empresas a tomar decisões melhores.</div><div><br /></div><div>Embora a IA tenha muitos benefícios, também há preocupações sobre seus impactos no mundo do trabalho e na privacidade. Como a IA está sendo usada para automatizar tarefas, há preocupações de que ela possa substituir muitos empregos humanos. Além disso, há preocupações sobre o uso indevido de dados pessoais coletados pelos sistemas de IA e a falta de regulamentação adequada para garantir a privacidade dos usuários. É importante que essas preocupações sejam levadas em consideração e abordadas de forma proativa enquanto a IA continua a evoluir.</div><div><br /></div><div>Enquanto isso, a IA continua a se desenvolver e a se tornar cada vez mais presente em nossas vidas. É importante que as empresas e indivíduos estejam cientes dos benefícios e desafios da IA e estejam preparados para aproveitar ao máximo suas vantagens enquanto trabalham para mitigar seus riscos. Como a tecnologia continua a avançar, é emocionante ver como a IA irá mudar o mundo e o que ela trará no futuro.</div></div>Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com0tag:blogger.com,1999:blog-33852002.post-84346793079377036122021-05-08T16:12:00.013-03:002021-05-09T18:16:19.143-03:00Sublime - Como Criar Um SnippetOi, pessoal! Ainda não conhecia essa <i><b>feature</b></i> do sublime, que me foi apresentada por um novo colega de trabalho e eu achei o máximo.<div><br /></div><div>Você sabia que dá pra criar um bloco de código que você utilize muito e criar uma chamada específica para que ele possa ser inserido, de maneira prática, no seu código enquanto você está escrevendo?</div><div><br /></div><div>Bom, como exemplo, vamos criar um <i><b>snippet </b></i>de <i><b>debug </b></i>para códigos PHP.</div><div><br /></div><div>(clique nas imagens para ampliar)</div><div><div class="separator" style="clear: both; text-align: center;"><br /></div>1 - Para começar, acesse as seguintes opções do menu:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-jWRc6Vy8sWI/YJbYN-a-yKI/AAAAAAAAcjw/9ERP4yA2acgdYFQO77mhULltGPsmQEqeQCLcBGAsYHQ/s1115/1.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="599" data-original-width="1115" height="215" src="https://1.bp.blogspot.com/-jWRc6Vy8sWI/YJbYN-a-yKI/AAAAAAAAcjw/9ERP4yA2acgdYFQO77mhULltGPsmQEqeQCLcBGAsYHQ/w400-h215/1.png" width="400" /></a></div><br /><div><br /></div><div>2 - Após acessar a opção de criação, vai se abrir a seguinte janela:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-8CaRtNkfsWY/YJbaaUXz6VI/AAAAAAAAcj4/0J4Kl_UIw44m1tFuIjsvZdiP9rRMdZqUACLcBGAsYHQ/s1686/2.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="512" data-original-width="1686" src="https://1.bp.blogspot.com/-8CaRtNkfsWY/YJbaaUXz6VI/AAAAAAAAcj4/0J4Kl_UIw44m1tFuIjsvZdiP9rRMdZqUACLcBGAsYHQ/s320/2.png" width="320" /></a></div><br /><div><br /></div><div>3 - O código que aparece é composto por:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-Sg8giNlJk44/YJbgdccHnmI/AAAAAAAAckI/4UUeiWtGJ7gng04T0_5ahKjtl130wstUQCLcBGAsYHQ/s1330/3.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="376" data-original-width="1330" src="https://1.bp.blogspot.com/-Sg8giNlJk44/YJbgdccHnmI/AAAAAAAAckI/4UUeiWtGJ7gng04T0_5ahKjtl130wstUQCLcBGAsYHQ/s320/3.png" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><div>4 - O nosso <b><i>snippet </i></b>de <i><b>debug </b></i>ficará assim:</div><div><br /></div><p><snippet></p><p><span style="white-space: pre;"> </span><content><![CDATA[</p><p>echo "<pre>";</p><p>print_r(${1:this});</p><p>die("</pre>");</p><p>]]></content></p><p><span style="white-space: pre;"> </span><!-- Optional: Set a tabTrigger to define how to trigger the snippet --></p><p><span style="white-space: pre;"> </span><tabTrigger>debug</tabTrigger></p><p><span style="white-space: pre;"> </span><!-- Optional: Set a scope to limit where the snippet will trigger --></p><p><span style="white-space: pre;"> </span><!-- <scope>source.python</scope> --></p><p></snippet></p><div><br /></div><div>5 - Pressione <b>CTRL + S</b> para salvar seu snippet e o local de salvar já abrirá corretamente pra você. Será algo como: \Sublime Text 3\Packages\User</div><div><br /></div><div>6 - Salve o nosso <b><i>snippet</i></b> como <b>Debug.sublime-snippet</b></div><div><br /></div><div>Agora toda vez que você estiver programando em PHP, escrever a palavra <b><i>debug </i></b>e pressionar a tecla TAB, o seguinte código será impresso na tela pra você:</div><div><p style="text-align: left;">echo "<pre>";<br />print_r(this);<br />die("</pre>");</p></div><div>Esse código facilita a exibição de estruturas, como arrays, por exemplo, no navegador sempre que você está <i><b>debugando </b></i>um código. </div><div><br /></div><div>Legal, não é? Espero que, como esse novo conhecimento tem sido útil no meu dia-a-dia, também possa ser útil pra você que também não conhecia. Até a próxima!</div>
Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com0tag:blogger.com,1999:blog-33852002.post-37731794006517768432021-05-08T15:13:00.002-03:002021-05-08T15:16:00.378-03:00Sublime - Atalhos Para Comentar O CódigoOi, pessoas! <div><br /></div><div>Como uma extensão desse post que criei em 2019 >> <a href="/2019/08/sublime-como-programar-atalho-para.html" target="_blank">Sublime - Como Programar Atalho Para Identar O Código</a> gostaria de apresentar a vocês dois atalhos que utilizo para comentar o código.</div><div><br /></div><div>São os atalhos: </div><div><br /></div><div>{ "keys": ["ctrl+1"], "command": "toggle_comment", "args": { "block": false } }, </div><div><br /></div><div>{ "keys": ["ctrl+2"], "command": "toggle_comment", "args": { "block": true } } </div><div><br /></div><div>O primeiro atalho, ctrl + 1, é utilizado para comentar apenas uma linha de código. </div><div><br /></div><div>O segundo atalho, ctrl + 2, é utilizado para comentar blocos de código. </div><div><br /></div><div>Lembrando que, você sempre pode personalizar as teclas ao seu gosto. Gosto dessa praticidade pois, facilita o meu dia-a-dia. </div><div><br /></div><div>Quem sabe também pode facilitar o seu? </div><div><br /></div><div>Abraços!</div>Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com0tag:blogger.com,1999:blog-33852002.post-25515817091358967132020-06-22T00:23:00.000-03:002020-06-22T00:55:52.016-03:00Galeria De Fotos PHP - Laravel - PhotosGallery<div style="text-align: justify;">
Ei, pessoas! Estava de férias por agora e vou compartilhar um projetinho que fiz. Uma galeria de fotos em Laravel. O Layout é responsivo (Bootstrap) e a galeria possui painel administrativo com opção de criação e exclusão de álbum.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://www.blogger.com/blogger.g?blogID=33852002" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"></a><a href="https://www.blogger.com/blogger.g?blogID=33852002" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"></a><a href="https://1.bp.blogspot.com/-hqldPK7I9Yg/Xu1Nx4XBy0I/AAAAAAAAaqg/WuPf-JXW37opAthaI7CypCSZDZ3BYRocQCLcBGAsYHQ/s1600/imgGaleria.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1181" data-original-width="1580" height="297" src="https://1.bp.blogspot.com/-hqldPK7I9Yg/Xu1Nx4XBy0I/AAAAAAAAaqg/WuPf-JXW37opAthaI7CypCSZDZ3BYRocQCLcBGAsYHQ/s400/imgGaleria.png" width="400" /></a></div>
<div class="" style="clear: both; text-align: justify;">
<br />
Faça o download do projeto no link:<br />
<br />
<a href="https://github.com/keniaferreira/PhotosGallery" target="_blank">https://github.com/keniaferreira/PhotosGallery</a><br />
<br />
Crie a pasta albuns dentro da pasta /public<br />
<br />
Rode os comandos:<br />
<br />
composer install<br />
<br />
php artisan key:generate<br />
<br />
Copie o conteúdo do arquivo .env.example e cole no arquivo .env que foi gerado.<br />
<br />
Crie o banco: photos_gallery e não se esqueça de inserir o nome dele no arquivo .env:<br />
<br />
DB_CONNECTION=mysql<br />
DB_HOST=127.0.0.1<br />
DB_PORT=3306<br />
DB_DATABASE=photos_gallery<br />
DB_USERNAME=root<br />
DB_PASSWORD=<br />
<br />
Rode o comando php artisan migrate para construir as tabelas do banco.<br />
<br />
Para criar um novo usuário, acesse a rota /login e clique em Register.<br />
<br /></div>
<div class="" style="clear: both; text-align: justify;">
Para ativar um usuário, acesse a tabela users e coloque 1(true) no campo active:<br />
<br />
<img alt="" height="50" src="data:image/png;base64,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" width="400" /><br />
<br /></div>
<div class="" style="clear: both; text-align: justify;">
Ao efetuar login, utilize os links os seguintes links para criar e gerenciar os álbuns:<br />
<br /></div>
<img alt="" height="79" src="data:image/png;base64,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" width="400" /><br />
<a href="https://www.blogger.com/blogger.g?blogID=33852002" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><br />
Ao criar um álbum, a foto de capa não aparecerá junto com as fotos do álbum. Decidi criar assim para o caso de alguém querer criar uma imagem somente para a capa. Caso queira que a foto da capa também seja listada no álbum, selecione ela novamente junto com as outras fotos que farão parte do álbum na opção 'Escolher Demais Fotos':<br />
<br />
<img alt="" height="102" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA6gAAADvCAYAAAD/9PlhAAAgAElEQVR4Ae29/U9cSZrnm39FZf8w2lKWhhL5QwMjFUgtFZZ7B6MSDJJBSLbHsnBX21z5DnTduXit7sLVXYU1a3wtj1mm/CLZpiRoetcYzWLcqrHS4wZ3FbXpslhc5jJamGwVjOlSWow7zVoeLMs931Wc1zhvmSczSfJk5vcHlJCcl4gnPuc58Y0n4onQy1evwR/agAyQATJABsgAGSADZIAMkAEyQAaKzUCo2AXg/fkQkAEyQAbIABkgA2SADJABMkAGyIBggAKVEWRG0MkAGSADZIAMkAEyQAbIABkgA4FggAKVIAYCRI6YccSMDJABMkAGyAAZIANkgAyQAQpUClQKVDJABsgAGSADZIAMkAEyQAbIQCAYoEAliIEAkaNlHC0jA2SADJABMkAGyAAZIANkgAKVApUClQyQATJABsgAGSADZIAMkAEyEAgGKFAJYiBA5GgZR8vIABkgA2SADJABMkAGyAAZoEClQKVAJQNkgAyQATJABsgAGSADZIAMBIIBClSCGAgQOVrG0TIyQAbIABkgA2SADJABMkAGKFApUClQyQAZIANkgAyQATJABsgAGSADgWCAApUgBgJEjpZxtIwMkAEyQAbIABkgA2SADJABClQKVApUMkAGyAAZIANkgAyQATJABshAIBigQCWIgQCRo2UcLSMDZIAMkAEyQAbIABkgA2SAApUClQKVDJABMkAGyAAZIANkgAyQATIQCAYoUAMD4gssXD6MmqoGHP88FQg4OILFESwyQAbIABkgA2SADJABMkAGdpIBCtSACNTEr7pRXRVFpKoOvbcoUHfyIeC96HTJABkgA2SADJABMkAGyEAwGKBADYBATVzXxGltB45PrTF6GoA2oYMKhoNiO7AdyAAZIANkgAyQATJQWQxQoBZZDCUme1FTFUX1vvOYfVxZ8NHZsL3JABkgA2SADJABMkAGyAAZkBmgQC2qQF3BpeYGHLg8j40tgimDyd/JAxkgA2SADJABMkAGyAAZqDwGKFCLKlArDzg6GbY5GSADZIAMkAEyQAbIABkgA14MbItA3View/i5PhzY26pMV40oyX6iqGnuwIG+8xifXWGE0EUIq9N769Dys9tYd/m/V6OJ79enxNTgOrSPrjjXrD6fx1BbHSIN/bj1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" width="400" /><br />
<br />
Principais Controllers:<br />
<br />
IndexController - Listagem dos álbuns e das fotos de cada álbum.<br />
UploadController - Criação e upload de fotos em cada álbum.<br />
AdmAlbumController - Listagem e exclusão de álbuns criados.<br />
<br />
Request:<br />
<br />
UploadFotosRequest - Regras de validação do upload.
<div style="display:none">
<meta name="description" content="Galeria de fotos gratuita em PHP - Láravel para download." />
<meta name="keywords" content="galeria de fotos, php, laravel, galeria de fotos laravel, script gratis php,"/>
</div>Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com3tag:blogger.com,1999:blog-33852002.post-16219724555852644622020-05-12T22:30:00.002-03:002020-05-12T22:30:33.356-03:00Ativar Sistema de Login Laravel 7.0Olá! Hoje nós vamos ver os comandos para ativação do sistema de autenticação no Laravel 7.0.<br />
<br />
Rode os seguintes comandos:<br />
<br />
1 - Para instalar o pacote laravel/ui. Comando:<br />
<span style="background-color: #f8f8f8;"><br /></span>
<span style="background-color: #f8f8f8;">composer </span><span style="background-color: #f8f8f8; color: green; font-weight: bold;">require</span><span style="background-color: #f8f8f8;"> laravel</span><span style="background-color: #f8f8f8; color: #666666;">/</span><span style="background-color: #f8f8f8;">ui</span><br />
<br />
2 - Agora, utilize algum dos seguintes comandos par ativar a autenticação:<br />
<br />
Com Bootstrap:<br />
<span style="background-color: #f8f8f8;"><br /></span>
<span style="background-color: #f8f8f8;">php artisan ui bootstrap </span><span style="background-color: #f8f8f8; color: #666666;">--</span><span style="background-color: #f8f8f8;">auth</span><br />
<br />
Com Vue:<br />
<span style="background-color: #f8f8f8;"><br /></span>
<span style="background-color: #f8f8f8;">php artisan ui vue </span><span style="background-color: #f8f8f8; color: #666666;">--</span><span style="background-color: #f8f8f8;">auth</span><br />
<br />
Com react:<br />
<span style="background-color: #f8f8f8;"><br /></span>
<span style="background-color: #f8f8f8;">php artisan ui react </span><span style="background-color: #f8f8f8; color: #666666;">--</span><span style="background-color: #f8f8f8;">auth</span><br />
<br />
3 - Instale e compile o NPM. Comandos:<br />
<span style="background-color: #f8f8f8;"><br /></span>
<span style="background-color: #f8f8f8;">npm install</span><br />
<span style="background-color: #f8f8f8;"><br /></span>
<span style="background-color: #f8f8f8;">npm run dev</span>Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com0tag:blogger.com,1999:blog-33852002.post-83723328890261917232019-08-23T00:22:00.000-03:002019-08-23T00:22:01.040-03:00Laravel - Como Transformar Um Array Num Request ObjectOi, pessoas! Hoje eu vou ensinar pra vocês como transformar um array num Request Object no Laravel.<br />
<br />
Eu precisei utilizar uma função de cadastro de dados dentro de um Controller que já recebe requisição de cadastro via formulário HTML. Para não ter que criar outro código de cadastro com todas as validações, resolvi utilizar a função do Controller mas, o mesmo só recebe os dados via Request. Então surgiu a necessidade de converter os dados em um Request Object antes de enviar.<br />
<br />
Isso pode ser feito da seguinte forma:<br />
<br />
<style type="text/css">
td.linenos { background-color: #f0f0f0; padding-right: 10px; }
span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }
pre { line-height: 125%; }
body .hll { background-color: #ffffcc }
body { background: #f0f0f0; }
body .c { color: #60a0b0; font-style: italic } /* Comment */
body .err { border: 1px solid #FF0000 } /* Error */
body .k { color: #007020; font-weight: bold } /* Keyword */
body .o { color: #666666 } /* Operator */
body .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
body .cp { color: #007020 } /* Comment.Preproc */
body .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
body .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
body .gd { color: #A00000 } /* Generic.Deleted */
body .ge { font-style: italic } /* Generic.Emph */
body .gr { color: #FF0000 } /* Generic.Error */
body .gh { color: #000080; font-weight: bold } /* Generic.Heading */
body .gi { color: #00A000 } /* Generic.Inserted */
body .go { color: #888888 } /* Generic.Output */
body .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
body .gs { font-weight: bold } /* Generic.Strong */
body .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
body .gt { color: #0044DD } /* Generic.Traceback */
body .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
body .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
body .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
body .kp { color: #007020 } /* Keyword.Pseudo */
body .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
body .kt { color: #902000 } /* Keyword.Type */
body .m { color: #40a070 } /* Literal.Number */
body .s { color: #4070a0 } /* Literal.String */
body .na { color: #4070a0 } /* Name.Attribute */
body .nb { color: #007020 } /* Name.Builtin */
body .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
body .no { color: #60add5 } /* Name.Constant */
body .nd { color: #555555; font-weight: bold } /* Name.Decorator */
body .ni { color: #d55537; font-weight: bold } /* Name.Entity */
body .ne { color: #007020 } /* Name.Exception */
body .nf { color: #06287e } /* Name.Function */
body .nl { color: #002070; font-weight: bold } /* Name.Label */
body .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
body .nt { color: #062873; font-weight: bold } /* Name.Tag */
body .nv { color: #bb60d5 } /* Name.Variable */
body .ow { color: #007020; font-weight: bold } /* Operator.Word */
body .w { color: #bbbbbb } /* Text.Whitespace */
body .mf { color: #40a070 } /* Literal.Number.Float */
body .mh { color: #40a070 } /* Literal.Number.Hex */
body .mi { color: #40a070 } /* Literal.Number.Integer */
body .mo { color: #40a070 } /* Literal.Number.Oct */
body .sb { color: #4070a0 } /* Literal.String.Backtick */
body .sc { color: #4070a0 } /* Literal.String.Char */
body .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
body .s2 { color: #4070a0 } /* Literal.String.Double */
body .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
body .sh { color: #4070a0 } /* Literal.String.Heredoc */
body .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
body .sx { color: #c65d09 } /* Literal.String.Other */
body .sr { color: #235388 } /* Literal.String.Regex */
body .s1 { color: #4070a0 } /* Literal.String.Single */
body .ss { color: #517918 } /* Literal.String.Symbol */
body .bp { color: #007020 } /* Name.Builtin.Pseudo */
body .vc { color: #bb60d5 } /* Name.Variable.Class */
body .vg { color: #bb60d5 } /* Name.Variable.Global */
body .vi { color: #bb60d5 } /* Name.Variable.Instance */
body .il { color: #40a070 } /* Literal.Number.Integer.Long */
</style>
<br />
<h2>
</h2>
<div class="highlight" style="background: #f0f0f0;">
<pre style="line-height: 125%;"><span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 1</span> <span style="color: #bb60d5;">$request</span> <span style="color: #666666;">=</span> <span style="color: #007020; font-weight: bold;">new</span> \Illuminate\Http\Request();
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 2</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 3</span> <span style="color: #bb60d5;">$request</span><span style="color: #666666;">-></span><span style="color: #4070a0;">replace</span>([
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 4</span> <span style="color: #4070a0;">'dado1'</span> <span style="color: #666666;">=></span> <span style="color: #4070a0;">'bar1'</span>,
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 5</span> <span style="color: #4070a0;">'dado2'</span> <span style="color: #666666;">=></span> <span style="color: #4070a0;">'bar2'</span>,
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 6</span> <span style="color: #4070a0;">'dado3'</span> <span style="color: #666666;">=></span> <span style="color: #4070a0;">'bar3'</span>,
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 7</span> ]);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 8</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 9</span> <span style="color: #60a0b0; font-style: italic;">//CHAMANDO UMA FUNÇÃO DE UM CONTROLLER COM A REQUISIÇÃO</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">10</span> \App\Http\Controllers\Cliente<span style="color: #666666;">::</span><span style="color: #4070a0;">create</span>(<span style="color: #bb60d5;">$request</span>);
</pre>
</div>
<br />
<br />Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com1tag:blogger.com,1999:blog-33852002.post-83743174060987736782019-08-16T06:11:00.000-03:002019-08-16T06:11:10.401-03:00Sublime - Como Programar Atalho Para Identar O CódigoO Sublime não possui um atalho para a identação do código, mas, a boa notícia é que você pode configurar um. 😃<br />
<br />
Então, vamos começar. Para inserir essa configuração, basta acessar as opções Prefences - Key Bindings<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-uFQskFDxEu4/XTGrbi4OgmI/AAAAAAAAV-g/MO4anNTzNH4IllGEjU86DeTVupqvh6GXACLcBGAs/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="437" data-original-width="617" src="https://1.bp.blogspot.com/-uFQskFDxEu4/XTGrbi4OgmI/AAAAAAAAV-g/MO4anNTzNH4IllGEjU86DeTVupqvh6GXACLcBGAs/s1600/1.png" /></a></div>
<br />
<span style="text-align: justify;">Vamos configurar nosso atalho na aba direita da janela que se abriu:</span><br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-_lZPGza2Dvk/XTGrhe31r4I/AAAAAAAAV-k/sjLMBjkHy3stSsL2g1jZsphyN7wBrLrugCLcBGAs/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="400" data-original-width="617" src="https://1.bp.blogspot.com/-_lZPGza2Dvk/XTGrhe31r4I/AAAAAAAAV-k/sjLMBjkHy3stSsL2g1jZsphyN7wBrLrugCLcBGAs/s1600/2.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Para configurar, basta inserir o seguinte código:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
[
{ <span style="color: #062873; font-weight: bold;">"keys"</span>: [<span style="color: #4070a0;">"ctrl+r"</span>], <span style="color: #062873; font-weight: bold;">"command"</span>: <span style="color: #4070a0;">"reindent"</span>} ]</div>
<br />
Vai ficar assim:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-ZMQ4D1P72Z8/XTGrmWSB5dI/AAAAAAAAV-o/pJRp16vmCp8fm8v2SEWIGfo1_BSVeiAaQCLcBGAs/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="533" data-original-width="598" src="https://1.bp.blogspot.com/-ZMQ4D1P72Z8/XTGrmWSB5dI/AAAAAAAAV-o/pJRp16vmCp8fm8v2SEWIGfo1_BSVeiAaQCLcBGAs/s1600/3.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
Como você pôde perceber pelo código, utilizei o atalho <b>ctrl+r</b>. Mas, essa configuração é livre, você pode utilizar as teclas que desejar.Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com0tag:blogger.com,1999:blog-33852002.post-36325555097618961142019-08-09T00:21:00.000-03:002019-08-09T00:21:10.830-03:00Laravel - Como Liberar Uma Página Apenas Para Usuários LogadosVamos supor que você já <a href="http://www.keniaferreira.com/2019/06/laravel-habilitando-as-paginas-de.html" target="_blank">habilitou a autenticação de usuários no Laravel</a> e agora você deseja restringir o acesso de certas rotas apenas para usuários logados.<br />
<div>
<br /></div>
<div>
Para realizar o procedimento, você deve acessar o Controller que vai ter seu acesso restringido no diretório \app\Http\Controllers e inserir no construct:</div>
<div>
<span style="color: #bb60d5;"><br /></span></div>
<div>
<span style="color: #bb60d5;">$this</span><span style="color: #666666;">-></span><span style="color: #4070a0;">middleware</span>(<span style="color: #4070a0;">'auth'</span>);</div>
<div>
<br /></div>
Vai ficar assim:<br />
<style type="text/css">
td.linenos { background-color: #f0f0f0; padding-right: 10px; }
span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }
pre { line-height: 125%; }
body .hll { background-color: #ffffcc }
body { background: #f0f0f0; }
body .c { color: #60a0b0; font-style: italic } /* Comment */
body .err { border: 1px solid #FF0000 } /* Error */
body .k { color: #007020; font-weight: bold } /* Keyword */
body .o { color: #666666 } /* Operator */
body .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
body .cp { color: #007020 } /* Comment.Preproc */
body .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
body .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
body .gd { color: #A00000 } /* Generic.Deleted */
body .ge { font-style: italic } /* Generic.Emph */
body .gr { color: #FF0000 } /* Generic.Error */
body .gh { color: #000080; font-weight: bold } /* Generic.Heading */
body .gi { color: #00A000 } /* Generic.Inserted */
body .go { color: #888888 } /* Generic.Output */
body .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
body .gs { font-weight: bold } /* Generic.Strong */
body .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
body .gt { color: #0044DD } /* Generic.Traceback */
body .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
body .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
body .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
body .kp { color: #007020 } /* Keyword.Pseudo */
body .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
body .kt { color: #902000 } /* Keyword.Type */
body .m { color: #40a070 } /* Literal.Number */
body .s { color: #4070a0 } /* Literal.String */
body .na { color: #4070a0 } /* Name.Attribute */
body .nb { color: #007020 } /* Name.Builtin */
body .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
body .no { color: #60add5 } /* Name.Constant */
body .nd { color: #555555; font-weight: bold } /* Name.Decorator */
body .ni { color: #d55537; font-weight: bold } /* Name.Entity */
body .ne { color: #007020 } /* Name.Exception */
body .nf { color: #06287e } /* Name.Function */
body .nl { color: #002070; font-weight: bold } /* Name.Label */
body .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
body .nt { color: #062873; font-weight: bold } /* Name.Tag */
body .nv { color: #bb60d5 } /* Name.Variable */
body .ow { color: #007020; font-weight: bold } /* Operator.Word */
body .w { color: #bbbbbb } /* Text.Whitespace */
body .mf { color: #40a070 } /* Literal.Number.Float */
body .mh { color: #40a070 } /* Literal.Number.Hex */
body .mi { color: #40a070 } /* Literal.Number.Integer */
body .mo { color: #40a070 } /* Literal.Number.Oct */
body .sb { color: #4070a0 } /* Literal.String.Backtick */
body .sc { color: #4070a0 } /* Literal.String.Char */
body .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
body .s2 { color: #4070a0 } /* Literal.String.Double */
body .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
body .sh { color: #4070a0 } /* Literal.String.Heredoc */
body .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
body .sx { color: #c65d09 } /* Literal.String.Other */
body .sr { color: #235388 } /* Literal.String.Regex */
body .s1 { color: #4070a0 } /* Literal.String.Single */
body .ss { color: #517918 } /* Literal.String.Symbol */
body .bp { color: #007020 } /* Name.Builtin.Pseudo */
body .vc { color: #bb60d5 } /* Name.Variable.Class */
body .vg { color: #bb60d5 } /* Name.Variable.Global */
body .vi { color: #bb60d5 } /* Name.Variable.Instance */
body .il { color: #40a070 } /* Literal.Number.Integer.Long */
</style>
<br />
<h2>
</h2>
<div class="highlight" style="background: #f0f0f0;">
<pre style="line-height: 125%;"><span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 1</span> <span style="color: #666666;"><?</span>php
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 2</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 3</span> <span style="color: #007020; font-weight: bold;">namespace</span> App\Http\Controllers;
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 4</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 5</span> <span style="color: #007020; font-weight: bold;">use</span> Illuminate\Http\Request;
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 6</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 7</span> <span style="color: #007020; font-weight: bold;">class</span> <span style="color: #0e84b5; font-weight: bold;">ClienteController</span> <span style="color: #007020; font-weight: bold;">extends</span> Controller
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 8</span> {
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 9</span> <span style="color: #007020; font-weight: bold;">public</span> <span style="color: #007020; font-weight: bold;">function</span> <span style="color: #06287e;">__construct</span>()
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">10</span> {
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">11</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">12</span> <span style="color: #bb60d5;">$this</span><span style="color: #666666;">-></span><span style="color: #4070a0;">middleware</span>(<span style="color: #4070a0;">'auth'</span>);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">13</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">14</span> }
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">15</span> }
</pre>
</div>
<br />Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com0tag:blogger.com,1999:blog-33852002.post-6662466467926743042019-08-02T00:38:00.000-03:002019-08-02T00:38:00.874-03:00Laravel - Rota Padrão Para Página InexistenteÉ interessante definir essa configuração para quando o usuário digitar em seu site o endereço de uma rota que não existe.<br />
<br />
Para configurar, basta abrir o arquivo de rotas(web.php) da pasta \routes<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-RdQzB0hyWsc/XS230rWWOpI/AAAAAAAAV9Q/IIgGeHcyCw0rffboooM_-4OKhrER3gV_gCLcBGAs/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="134" data-original-width="162" src="https://1.bp.blogspot.com/-RdQzB0hyWsc/XS230rWWOpI/AAAAAAAAV9Q/IIgGeHcyCw0rffboooM_-4OKhrER3gV_gCLcBGAs/s1600/1.png" /></a></div>
<br />
E inserir a linha:<br />
<br />
Route::get('/{slug?}', 'HomeController@index' );<br />
<br />
Nesta situação, vai ser retornada a index do controller HomeController:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-5YmW54ECbrc/XS24NrTwV2I/AAAAAAAAV9Y/nSXCIz45VWUI35MFG6gRTtY7qRd5HFIOACLcBGAs/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="381" data-original-width="550" src="https://1.bp.blogspot.com/-5YmW54ECbrc/XS24NrTwV2I/AAAAAAAAV9Y/nSXCIz45VWUI35MFG6gRTtY7qRd5HFIOACLcBGAs/s1600/2.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Podemos inserir também o seguinte código:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Route::get('/{slug?}', function () {</div>
<div class="separator" style="clear: both; text-align: justify;">
return view('welcome');</div>
<div class="separator" style="clear: both; text-align: justify;">
});</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
para retornar a view Welcome. Você pode retornar uma outra View, caso queira:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-xjfJpalR1Ts/XS25uzU28SI/AAAAAAAAV9k/Mb2dVDInyGwHR7oQl1ecp7oo2G6jhM-owCLcBGAs/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="428" data-original-width="550" src="https://1.bp.blogspot.com/-xjfJpalR1Ts/XS25uzU28SI/AAAAAAAAV9k/Mb2dVDInyGwHR7oQl1ecp7oo2G6jhM-owCLcBGAs/s1600/3.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Com o código:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Route::get('/{slug?}', function () {</div>
<div class="separator" style="clear: both; text-align: justify;">
echo "Página não encontrada.";</div>
<div class="separator" style="clear: both; text-align: justify;">
});</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-8EgPQVFHclc/XS26-a4J8sI/AAAAAAAAV9s/Q9WIokKI568v5K9kqabZNDau-9_LPAyWgCLcBGAs/s1600/4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="419" data-original-width="550" src="https://1.bp.blogspot.com/-8EgPQVFHclc/XS26-a4J8sI/AAAAAAAAV9s/Q9WIokKI568v5K9kqabZNDau-9_LPAyWgCLcBGAs/s1600/4.png" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
retornamos a mensagem: Página não encontrada. </div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Dei alguns exemplos pra mostrar que dá pra personalizar da maneira que você considerar mais conveniente para o seu projeto.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com0tag:blogger.com,1999:blog-33852002.post-39059635648272924242019-07-26T00:26:00.000-03:002019-07-26T00:26:00.582-03:00Laravel - Alterar O Fuso Horário Do ProjetoÉ importante realizar a alteração do fuso horário do seu projeto porque isso pode influenciar em várias coisas, inclusive no horário que vai ser inserido no banco quando você gravar data e hora de inserção ou atualização de um dado.<br />
<br />
Para alterar:<br />
<br />
1 - Entrar na pasta: \config e abrir o arquivo app.php. na linha 'timezone' => 'UTC', alterar para o fuso desejado.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-tSEz6iYfag4/XS218onLyAI/AAAAAAAAV8s/jPaY-gMUssgtRhug1iThBEIIgaSG2ExWQCLcBGAs/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="348" data-original-width="242" src="https://1.bp.blogspot.com/-tSEz6iYfag4/XS218onLyAI/AAAAAAAAV8s/jPaY-gMUssgtRhug1iThBEIIgaSG2ExWQCLcBGAs/s1600/1.png" /></a></div>
<br />
<br />
Estou em Belo Horizonte, então vou inserir: 'timezone' => 'America/Sao_Paulo',<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-VPe3_guYKds/XS22C7EtReI/AAAAAAAAV80/k34hjhgvLXY51ctNhOrZo4Wi96VuNJylwCLcBGAs/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="470" data-original-width="557" src="https://1.bp.blogspot.com/-VPe3_guYKds/XS22C7EtReI/AAAAAAAAV80/k34hjhgvLXY51ctNhOrZo4Wi96VuNJylwCLcBGAs/s1600/2.png" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-ruQfUFKtj10/XS22WaBifoI/AAAAAAAAV9E/HdhvAzH21GU-2PwScPyk8MLhWbbt1QvDACLcBGAs/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="460" data-original-width="557" src="https://1.bp.blogspot.com/-ruQfUFKtj10/XS22WaBifoI/AAAAAAAAV9E/HdhvAzH21GU-2PwScPyk8MLhWbbt1QvDACLcBGAs/s1600/3.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
Verifique mais opções de fuso horário da América suportados pelo PHP:<br />
<br />
<a href="https://www.php.net/manual/pt_BR/timezones.america.php" target="_blank">https://www.php.net/manual/pt_BR/timezones.america.php</a>Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com3tag:blogger.com,1999:blog-33852002.post-20965214781537466492019-07-19T00:00:00.000-03:002019-07-21T16:01:50.926-03:00Laravel - Erro SQLSTATE[42000]: Syntax error or access violation: 1071Algumas vezes ao executar o comando php artisan migrate pela primeira vez para construir tabelas no BD, é notado esse erro:<br />
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-lXbZ5v1XQ8A/XSSiA7B-HoI/AAAAAAAAV4Q/r8RuFJCL7ZYBS2bssjQvH7r6TPwVqFmjQCLcBGAs/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="377" data-original-width="596" height="252" src="https://1.bp.blogspot.com/-lXbZ5v1XQ8A/XSSiA7B-HoI/AAAAAAAAV4Q/r8RuFJCL7ZYBS2bssjQvH7r6TPwVqFmjQCLcBGAs/s400/1.png" width="400" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<div>
Para corrigir, é preciso acessar o arquivo: AppServiceProvider no caminho App/Providers:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-gbkQ4tiPdvE/XSSiEbH38dI/AAAAAAAAV4U/mYNIS_2iQMAtSCJNUrX7lJ3MO3rcu469gCLcBGAs/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="674" data-original-width="905" height="297" src="https://1.bp.blogspot.com/-gbkQ4tiPdvE/XSSiEbH38dI/AAAAAAAAV4U/mYNIS_2iQMAtSCJNUrX7lJ3MO3rcu469gCLcBGAs/s400/2.png" width="400" /></a></div>
<div>
<br /></div>
<div>
</div>
<div>
<br /></div>
<div>
E inserir a seguinte linha dentro do método boot:</div>
<div>
<br /></div>
<div>
\Illuminate\Support\Facades\Schema::defaultStringLength(191);</div>
<div>
<br /></div>
<div>
Vai ficar assim:</div>
<div>
<br /></div>
<div>
public function boot()</div>
<div>
{</div>
<div>
\Illuminate\Support\Facades\Schema::defaultStringLength(191);</div>
<div>
}</div>
<div>
<br /></div>
<div>
Logo depois, é necessário apagar todas as tabelas recém-criadas da base de dados e executar novamente o comando "php artisan migrate" para reconstruir as tabelas.</div>
</div>
<div>
<br /></div>
Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com1tag:blogger.com,1999:blog-33852002.post-10489970770925232412019-07-15T22:05:00.000-03:002019-07-15T22:35:00.013-03:00Laravel - Iniciando A Criação De Um Sistema SimplesOi, pessoas! Nesse post vamos aprender a criar um CRUD no Laravel.<br />
<br />
Vou iniciar a criação de um sistema de vendas com o cadastro dos produtos. Criaremos os seguintes métodos:<br />
<br />
Inserir produtos - <span style="color: orange;">C</span>reate<br />
Pesquisar produtos - <span style="color: orange;">R</span>ead<br />
Atualizar as informações de um produto - <span style="color: orange;">U</span>pdate<br />
Deletar um produto - <span style="color: orange;">D</span>elete<br />
<br />
Resumindo, o nosso<span style="color: orange;"> CRUD</span> básico de cada dia.<br />
<br />
Supondo que você já leu o post <a href="http://www.keniaferreira.com/2019/05/laravel-resumo-sobre-instalacao-e.html" target="_blank">Resumo Sobre a Instalação e Criação De Um Projeto</a> ou já sabe instalar tudo o que é necessário e já possui o ambiente pronto, vamos iniciar um novo projeto.<br />
<br />
<span style="font-size: large;">Criando O Projeto</span><br />
<br />
O nome do nosso novo projeto será sistema_vendas:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-XyQ4Q13xNfM/XSxr2ymHdiI/AAAAAAAAV6s/crVLYs2kLtEnFgD-KHMDlMFUAitlJ-MBACLcBGAs/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="376" data-original-width="595" height="252" src="https://1.bp.blogspot.com/-XyQ4Q13xNfM/XSxr2ymHdiI/AAAAAAAAV6s/crVLYs2kLtEnFgD-KHMDlMFUAitlJ-MBACLcBGAs/s400/1.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-M9ib-LOkPSQ/XSxr7vxeQEI/AAAAAAAAV6w/4v81vfAeZBYxMiEdXGpYep3ZBBD39NKsACLcBGAs/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="376" data-original-width="595" height="252" src="https://1.bp.blogspot.com/-M9ib-LOkPSQ/XSxr7vxeQEI/AAAAAAAAV6w/4v81vfAeZBYxMiEdXGpYep3ZBBD39NKsACLcBGAs/s400/2.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Vamos criar também o banco de dados do nosso projeto com o nome bd_sistema_vendas. Caso ainda não saiba criar um banco de dados, <a href="http://www.keniaferreira.com/2019/05/laravel-criando-o-banco-de-dados-e.html" target="_blank">verifique esse post</a>.<br />
<br />
No arquivo .env do seu projeto, insira as informações de conexão:<br />
<br />
DB_CONNECTION=mysql<br />
DB_HOST=127.0.0.1<br />
DB_PORT=3306<br />
DB_DATABASE=bd_sistema_vendas<br />
DB_USERNAME=root<br />
DB_PASSWORD=<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-tWZgn2y9698/XSxsthlc68I/AAAAAAAAV68/E6TeXXC-hpgu7hXTS1sVRg56qXdItHb4gCLcBGAs/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="469" data-original-width="602" src="https://1.bp.blogspot.com/-tWZgn2y9698/XSxsthlc68I/AAAAAAAAV68/E6TeXXC-hpgu7hXTS1sVRg56qXdItHb4gCLcBGAs/s1600/3.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-8W1vAvAT8GQ/XSxs4A6_c0I/AAAAAAAAV7A/1O_YTopu5JA_u0pvMEgX5AscTN3hj1AtQCLcBGAs/s1600/4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="657" data-original-width="334" src="https://1.bp.blogspot.com/-8W1vAvAT8GQ/XSxs4A6_c0I/AAAAAAAAV7A/1O_YTopu5JA_u0pvMEgX5AscTN3hj1AtQCLcBGAs/s1600/4.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: large;"><br /></span></div>
<span style="font-size: large;">Criando A Migration </span><br />
<br />
Vamos agora criar a Migration para a criação da tabela produto no nosso BD. Utilize o seguinte comando para criar a migration:<br />
<br />
php artisan make:migration create_produto --create=produto<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-UJ27WIxjg20/XSxtJ19XovI/AAAAAAAAV7M/yQ_gqH70eroKYqA3q9gNAeQeWuZ1slmnwCLcBGAs/s1600/5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="375" data-original-width="595" height="251" src="https://1.bp.blogspot.com/-UJ27WIxjg20/XSxtJ19XovI/AAAAAAAAV7M/yQ_gqH70eroKYqA3q9gNAeQeWuZ1slmnwCLcBGAs/s400/5.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-Aqe51Yx7KSQ/XSxtJ6SZFqI/AAAAAAAAV7Q/lVd8diFSY54LGNfP5EYpYRQW3wcG9j30gCLcBGAs/s1600/6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="376" data-original-width="595" height="252" src="https://1.bp.blogspot.com/-Aqe51Yx7KSQ/XSxtJ6SZFqI/AAAAAAAAV7Q/lVd8diFSY54LGNfP5EYpYRQW3wcG9j30gCLcBGAs/s400/6.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
O arquivo foi criado na pasta: \database\migrations<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-MU7IAtY0ucQ/XSxtlvdBG2I/AAAAAAAAV7c/Kch9jCtmzpMQEU5KGoxmbIn6u-IhJIEygCLcBGAs/s1600/7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="175" data-original-width="465" src="https://1.bp.blogspot.com/-MU7IAtY0ucQ/XSxtlvdBG2I/AAAAAAAAV7c/Kch9jCtmzpMQEU5KGoxmbIn6u-IhJIEygCLcBGAs/s1600/7.png" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
Abrir o arquivo criado e inserir no método up da Migration:</div>
<style type="text/css">
td.linenos { background-color: #f0f0f0; padding-right: 10px; }
span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }
pre { line-height: 125%; }
body .hll { background-color: #ffffcc }
body { background: #f0f0f0; }
body .c { color: #60a0b0; font-style: italic } /* Comment */
body .err { border: 1px solid #FF0000 } /* Error */
body .k { color: #007020; font-weight: bold } /* Keyword */
body .o { color: #666666 } /* Operator */
body .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
body .cp { color: #007020 } /* Comment.Preproc */
body .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
body .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
body .gd { color: #A00000 } /* Generic.Deleted */
body .ge { font-style: italic } /* Generic.Emph */
body .gr { color: #FF0000 } /* Generic.Error */
body .gh { color: #000080; font-weight: bold } /* Generic.Heading */
body .gi { color: #00A000 } /* Generic.Inserted */
body .go { color: #888888 } /* Generic.Output */
body .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
body .gs { font-weight: bold } /* Generic.Strong */
body .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
body .gt { color: #0044DD } /* Generic.Traceback */
body .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
body .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
body .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
body .kp { color: #007020 } /* Keyword.Pseudo */
body .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
body .kt { color: #902000 } /* Keyword.Type */
body .m { color: #40a070 } /* Literal.Number */
body .s { color: #4070a0 } /* Literal.String */
body .na { color: #4070a0 } /* Name.Attribute */
body .nb { color: #007020 } /* Name.Builtin */
body .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
body .no { color: #60add5 } /* Name.Constant */
body .nd { color: #555555; font-weight: bold } /* Name.Decorator */
body .ni { color: #d55537; font-weight: bold } /* Name.Entity */
body .ne { color: #007020 } /* Name.Exception */
body .nf { color: #06287e } /* Name.Function */
body .nl { color: #002070; font-weight: bold } /* Name.Label */
body .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
body .nt { color: #062873; font-weight: bold } /* Name.Tag */
body .nv { color: #bb60d5 } /* Name.Variable */
body .ow { color: #007020; font-weight: bold } /* Operator.Word */
body .w { color: #bbbbbb } /* Text.Whitespace */
body .mf { color: #40a070 } /* Literal.Number.Float */
body .mh { color: #40a070 } /* Literal.Number.Hex */
body .mi { color: #40a070 } /* Literal.Number.Integer */
body .mo { color: #40a070 } /* Literal.Number.Oct */
body .sb { color: #4070a0 } /* Literal.String.Backtick */
body .sc { color: #4070a0 } /* Literal.String.Char */
body .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
body .s2 { color: #4070a0 } /* Literal.String.Double */
body .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
body .sh { color: #4070a0 } /* Literal.String.Heredoc */
body .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
body .sx { color: #c65d09 } /* Literal.String.Other */
body .sr { color: #235388 } /* Literal.String.Regex */
body .s1 { color: #4070a0 } /* Literal.String.Single */
body .ss { color: #517918 } /* Literal.String.Symbol */
body .bp { color: #007020 } /* Name.Builtin.Pseudo */
body .vc { color: #bb60d5 } /* Name.Variable.Class */
body .vg { color: #bb60d5 } /* Name.Variable.Global */
body .vi { color: #bb60d5 } /* Name.Variable.Instance */
body .il { color: #40a070 } /* Literal.Number.Integer.Long */
</style>
<br />
<h2>
</h2>
<div class="highlight" style="background: #f0f0f0;">
<pre style="line-height: 125%;"><span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 1</span> <span style="color: #007020; font-weight: bold;">public</span> <span style="color: #007020; font-weight: bold;">function</span> <span style="color: #06287e;">up</span>()
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 2</span> {
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 3</span> Schema<span style="color: #666666;">::</span><span style="color: #4070a0;">create</span>(<span style="color: #4070a0;">'produto'</span>, <span style="color: #007020; font-weight: bold;">function</span> (Blueprint <span style="color: #bb60d5;">$table</span>) {
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 4</span> <span style="color: #bb60d5;">$table</span><span style="color: #666666;">-></span><span style="color: #4070a0;">bigIncrements</span>(<span style="color: #4070a0;">'id'</span>)<span style="color: #666666;">-></span><span style="color: #4070a0;">unique</span>();
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 5</span> <span style="color: #bb60d5;">$table</span><span style="color: #666666;">-></span><span style="color: #4070a0;">string</span>(<span style="color: #4070a0;">'nome'</span>);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 6</span> <span style="color: #bb60d5;">$table</span><span style="color: #666666;">-></span><span style="color: #4070a0;">string</span>(<span style="color: #4070a0;">'descricao'</span>);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 7</span> <span style="color: #bb60d5;">$table</span><span style="color: #666666;">-></span><span style="color: #4070a0;">decimal</span>(<span style="color: #4070a0;">'preco'</span>, <span style="color: #40a070;">10</span>, <span style="color: #40a070;">2</span>);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 8</span> <span style="color: #bb60d5;">$table</span><span style="color: #666666;">-></span><span style="color: #4070a0;">string</span>(<span style="color: #4070a0;">'status'</span>);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 9</span> <span style="color: #bb60d5;">$table</span><span style="color: #666666;">-></span><span style="color: #4070a0;">timestamps</span>();
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">10</span> });
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">11</span> }
</pre>
</div>
<br />
Veja que no método up estamos criando os campos que vamos utilizar em nossa tabela.<br />
<br />
Inserir no método down:<br />
<style type="text/css">
td.linenos { background-color: #f0f0f0; padding-right: 10px; }
span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }
pre { line-height: 125%; }
body .hll { background-color: #ffffcc }
body { background: #f0f0f0; }
body .c { color: #60a0b0; font-style: italic } /* Comment */
body .err { border: 1px solid #FF0000 } /* Error */
body .k { color: #007020; font-weight: bold } /* Keyword */
body .o { color: #666666 } /* Operator */
body .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
body .cp { color: #007020 } /* Comment.Preproc */
body .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
body .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
body .gd { color: #A00000 } /* Generic.Deleted */
body .ge { font-style: italic } /* Generic.Emph */
body .gr { color: #FF0000 } /* Generic.Error */
body .gh { color: #000080; font-weight: bold } /* Generic.Heading */
body .gi { color: #00A000 } /* Generic.Inserted */
body .go { color: #888888 } /* Generic.Output */
body .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
body .gs { font-weight: bold } /* Generic.Strong */
body .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
body .gt { color: #0044DD } /* Generic.Traceback */
body .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
body .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
body .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
body .kp { color: #007020 } /* Keyword.Pseudo */
body .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
body .kt { color: #902000 } /* Keyword.Type */
body .m { color: #40a070 } /* Literal.Number */
body .s { color: #4070a0 } /* Literal.String */
body .na { color: #4070a0 } /* Name.Attribute */
body .nb { color: #007020 } /* Name.Builtin */
body .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
body .no { color: #60add5 } /* Name.Constant */
body .nd { color: #555555; font-weight: bold } /* Name.Decorator */
body .ni { color: #d55537; font-weight: bold } /* Name.Entity */
body .ne { color: #007020 } /* Name.Exception */
body .nf { color: #06287e } /* Name.Function */
body .nl { color: #002070; font-weight: bold } /* Name.Label */
body .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
body .nt { color: #062873; font-weight: bold } /* Name.Tag */
body .nv { color: #bb60d5 } /* Name.Variable */
body .ow { color: #007020; font-weight: bold } /* Operator.Word */
body .w { color: #bbbbbb } /* Text.Whitespace */
body .mf { color: #40a070 } /* Literal.Number.Float */
body .mh { color: #40a070 } /* Literal.Number.Hex */
body .mi { color: #40a070 } /* Literal.Number.Integer */
body .mo { color: #40a070 } /* Literal.Number.Oct */
body .sb { color: #4070a0 } /* Literal.String.Backtick */
body .sc { color: #4070a0 } /* Literal.String.Char */
body .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
body .s2 { color: #4070a0 } /* Literal.String.Double */
body .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
body .sh { color: #4070a0 } /* Literal.String.Heredoc */
body .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
body .sx { color: #c65d09 } /* Literal.String.Other */
body .sr { color: #235388 } /* Literal.String.Regex */
body .s1 { color: #4070a0 } /* Literal.String.Single */
body .ss { color: #517918 } /* Literal.String.Symbol */
body .bp { color: #007020 } /* Name.Builtin.Pseudo */
body .vc { color: #bb60d5 } /* Name.Variable.Class */
body .vg { color: #bb60d5 } /* Name.Variable.Global */
body .vi { color: #bb60d5 } /* Name.Variable.Instance */
body .il { color: #40a070 } /* Literal.Number.Integer.Long */
</style>
<br />
<h2>
</h2>
<div class="highlight" style="background: #f0f0f0;">
<pre style="line-height: 125%;"><span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">1</span> <span style="color: #007020; font-weight: bold;">public</span> <span style="color: #007020; font-weight: bold;">function</span> <span style="color: #06287e;">down</span>()
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">2</span> {
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">3</span> Schema<span style="color: #666666;">::</span><span style="color: #4070a0;">dropIfExists</span>(<span style="color: #4070a0;">'produto'</span>);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">4</span> }
</pre>
</div>
<br />
O arquivo da Migration ficou assim:<br />
<style type="text/css">
td.linenos { background-color: #f0f0f0; padding-right: 10px; }
span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }
pre { line-height: 125%; }
body .hll { background-color: #ffffcc }
body { background: #f0f0f0; }
body .c { color: #60a0b0; font-style: italic } /* Comment */
body .err { border: 1px solid #FF0000 } /* Error */
body .k { color: #007020; font-weight: bold } /* Keyword */
body .o { color: #666666 } /* Operator */
body .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
body .cp { color: #007020 } /* Comment.Preproc */
body .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
body .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
body .gd { color: #A00000 } /* Generic.Deleted */
body .ge { font-style: italic } /* Generic.Emph */
body .gr { color: #FF0000 } /* Generic.Error */
body .gh { color: #000080; font-weight: bold } /* Generic.Heading */
body .gi { color: #00A000 } /* Generic.Inserted */
body .go { color: #888888 } /* Generic.Output */
body .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
body .gs { font-weight: bold } /* Generic.Strong */
body .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
body .gt { color: #0044DD } /* Generic.Traceback */
body .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
body .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
body .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
body .kp { color: #007020 } /* Keyword.Pseudo */
body .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
body .kt { color: #902000 } /* Keyword.Type */
body .m { color: #40a070 } /* Literal.Number */
body .s { color: #4070a0 } /* Literal.String */
body .na { color: #4070a0 } /* Name.Attribute */
body .nb { color: #007020 } /* Name.Builtin */
body .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
body .no { color: #60add5 } /* Name.Constant */
body .nd { color: #555555; font-weight: bold } /* Name.Decorator */
body .ni { color: #d55537; font-weight: bold } /* Name.Entity */
body .ne { color: #007020 } /* Name.Exception */
body .nf { color: #06287e } /* Name.Function */
body .nl { color: #002070; font-weight: bold } /* Name.Label */
body .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
body .nt { color: #062873; font-weight: bold } /* Name.Tag */
body .nv { color: #bb60d5 } /* Name.Variable */
body .ow { color: #007020; font-weight: bold } /* Operator.Word */
body .w { color: #bbbbbb } /* Text.Whitespace */
body .mf { color: #40a070 } /* Literal.Number.Float */
body .mh { color: #40a070 } /* Literal.Number.Hex */
body .mi { color: #40a070 } /* Literal.Number.Integer */
body .mo { color: #40a070 } /* Literal.Number.Oct */
body .sb { color: #4070a0 } /* Literal.String.Backtick */
body .sc { color: #4070a0 } /* Literal.String.Char */
body .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
body .s2 { color: #4070a0 } /* Literal.String.Double */
body .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
body .sh { color: #4070a0 } /* Literal.String.Heredoc */
body .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
body .sx { color: #c65d09 } /* Literal.String.Other */
body .sr { color: #235388 } /* Literal.String.Regex */
body .s1 { color: #4070a0 } /* Literal.String.Single */
body .ss { color: #517918 } /* Literal.String.Symbol */
body .bp { color: #007020 } /* Name.Builtin.Pseudo */
body .vc { color: #bb60d5 } /* Name.Variable.Class */
body .vg { color: #bb60d5 } /* Name.Variable.Global */
body .vi { color: #bb60d5 } /* Name.Variable.Instance */
body .il { color: #40a070 } /* Literal.Number.Integer.Long */
</style>
<br />
<h2>
</h2>
<div class="highlight" style="background: #f0f0f0;">
<pre style="line-height: 125%;"><span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 1</span> <span style="color: #666666;"><?</span>php
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 2</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 3</span> <span style="color: #007020; font-weight: bold;">use</span> Illuminate\Support\Facades\Schema;
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 4</span> <span style="color: #007020; font-weight: bold;">use</span> Illuminate\Database\Schema\Blueprint;
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 5</span> <span style="color: #007020; font-weight: bold;">use</span> Illuminate\Database\Migrations\Migration;
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 6</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 7</span> <span style="color: #007020; font-weight: bold;">class</span> <span style="color: #0e84b5; font-weight: bold;">CreateProduto</span> <span style="color: #007020; font-weight: bold;">extends</span> Migration
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 8</span> {
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 9</span> <span style="color: #4070a0; font-style: italic;">/**</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">10</span> <span style="color: #4070a0; font-style: italic;"> * Run the migrations.</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">11</span> <span style="color: #4070a0; font-style: italic;"> *</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">12</span> <span style="color: #4070a0; font-style: italic;"> * @return void</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">13</span> <span style="color: #4070a0; font-style: italic;"> */</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">14</span> <span style="color: #007020; font-weight: bold;">public</span> <span style="color: #007020; font-weight: bold;">function</span> <span style="color: #06287e;">up</span>()
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">15</span> {
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">16</span> Schema<span style="color: #666666;">::</span><span style="color: #4070a0;">create</span>(<span style="color: #4070a0;">'produto'</span>, <span style="color: #007020; font-weight: bold;">function</span> (Blueprint <span style="color: #bb60d5;">$table</span>) {
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">17</span> <span style="color: #bb60d5;">$table</span><span style="color: #666666;">-></span><span style="color: #4070a0;">bigIncrements</span>(<span style="color: #4070a0;">'id'</span>)<span style="color: #666666;">-></span><span style="color: #4070a0;">unique</span>();
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">18</span> <span style="color: #bb60d5;">$table</span><span style="color: #666666;">-></span><span style="color: #4070a0;">string</span>(<span style="color: #4070a0;">'nome'</span>);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">19</span> <span style="color: #bb60d5;">$table</span><span style="color: #666666;">-></span><span style="color: #4070a0;">string</span>(<span style="color: #4070a0;">'descricao'</span>);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">20</span> <span style="color: #bb60d5;">$table</span><span style="color: #666666;">-></span><span style="color: #4070a0;">decimal</span>(<span style="color: #4070a0;">'preco'</span>, <span style="color: #40a070;">10</span>, <span style="color: #40a070;">2</span>);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">21</span> <span style="color: #bb60d5;">$table</span><span style="color: #666666;">-></span><span style="color: #4070a0;">string</span>(<span style="color: #4070a0;">'status'</span>);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">22</span> <span style="color: #bb60d5;">$table</span><span style="color: #666666;">-></span><span style="color: #4070a0;">timestamps</span>();
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">23</span> });
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">24</span> }
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">25</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">26</span> <span style="color: #4070a0; font-style: italic;">/**</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">27</span> <span style="color: #4070a0; font-style: italic;"> * Reverse the migrations.</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">28</span> <span style="color: #4070a0; font-style: italic;"> *</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">29</span> <span style="color: #4070a0; font-style: italic;"> * @return void</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">30</span> <span style="color: #4070a0; font-style: italic;"> */</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">31</span> <span style="color: #007020; font-weight: bold;">public</span> <span style="color: #007020; font-weight: bold;">function</span> <span style="color: #06287e;">down</span>()
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">32</span> {
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">33</span> Schema<span style="color: #666666;">::</span><span style="color: #4070a0;">dropIfExists</span>(<span style="color: #4070a0;">'produto'</span>);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">34</span> }
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">35</span> }
</pre>
</div>
<br />
Vamos agora executar o comando php artisan migrate para criar a tabela no banco:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-evPfwABIMHQ/XSys-sAl_RI/AAAAAAAAV7o/i_epkqMULpUwUjzYmyYtn4IxoIT9B3DQACLcBGAs/s1600/8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="376" data-original-width="595" height="252" src="https://1.bp.blogspot.com/-evPfwABIMHQ/XSys-sAl_RI/AAAAAAAAV7o/i_epkqMULpUwUjzYmyYtn4IxoIT9B3DQACLcBGAs/s400/8.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Observe que foi criada a tabela produto e também as tabelas migration (responsável pela administração das migrations - controle de versão do nosso banco), users e password_resets (tabelas responsáveis pela administração dos usuários do sistema).</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-YOJ1qcd8Xqk/XSytImvFQ8I/AAAAAAAAV7s/XUIlSaR12xEtdwcpzglbB-_4qPWzFDNSACLcBGAs/s1600/9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="342" data-original-width="592" height="230" src="https://1.bp.blogspot.com/-YOJ1qcd8Xqk/XSytImvFQ8I/AAAAAAAAV7s/XUIlSaR12xEtdwcpzglbB-_4qPWzFDNSACLcBGAs/s400/9.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-size: large;">Criando A Model</span></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Vamos criar a Model para a administração dos dados da tabela produto. Utilize o seguinte comando para criar a model:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
php artisan make:model Produto</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
O arquivo foi criado no diretório \app</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Com a inserção dos campos, o arquivo vai ficar assim:</div>
<br />
<style type="text/css">
td.linenos { background-color: #f0f0f0; padding-right: 10px; }
span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }
pre { line-height: 125%; }
body .hll { background-color: #ffffcc }
body { background: #f0f0f0; }
body .c { color: #60a0b0; font-style: italic } /* Comment */
body .err { border: 1px solid #FF0000 } /* Error */
body .k { color: #007020; font-weight: bold } /* Keyword */
body .o { color: #666666 } /* Operator */
body .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
body .cp { color: #007020 } /* Comment.Preproc */
body .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
body .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
body .gd { color: #A00000 } /* Generic.Deleted */
body .ge { font-style: italic } /* Generic.Emph */
body .gr { color: #FF0000 } /* Generic.Error */
body .gh { color: #000080; font-weight: bold } /* Generic.Heading */
body .gi { color: #00A000 } /* Generic.Inserted */
body .go { color: #888888 } /* Generic.Output */
body .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
body .gs { font-weight: bold } /* Generic.Strong */
body .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
body .gt { color: #0044DD } /* Generic.Traceback */
body .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
body .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
body .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
body .kp { color: #007020 } /* Keyword.Pseudo */
body .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
body .kt { color: #902000 } /* Keyword.Type */
body .m { color: #40a070 } /* Literal.Number */
body .s { color: #4070a0 } /* Literal.String */
body .na { color: #4070a0 } /* Name.Attribute */
body .nb { color: #007020 } /* Name.Builtin */
body .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
body .no { color: #60add5 } /* Name.Constant */
body .nd { color: #555555; font-weight: bold } /* Name.Decorator */
body .ni { color: #d55537; font-weight: bold } /* Name.Entity */
body .ne { color: #007020 } /* Name.Exception */
body .nf { color: #06287e } /* Name.Function */
body .nl { color: #002070; font-weight: bold } /* Name.Label */
body .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
body .nt { color: #062873; font-weight: bold } /* Name.Tag */
body .nv { color: #bb60d5 } /* Name.Variable */
body .ow { color: #007020; font-weight: bold } /* Operator.Word */
body .w { color: #bbbbbb } /* Text.Whitespace */
body .mf { color: #40a070 } /* Literal.Number.Float */
body .mh { color: #40a070 } /* Literal.Number.Hex */
body .mi { color: #40a070 } /* Literal.Number.Integer */
body .mo { color: #40a070 } /* Literal.Number.Oct */
body .sb { color: #4070a0 } /* Literal.String.Backtick */
body .sc { color: #4070a0 } /* Literal.String.Char */
body .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
body .s2 { color: #4070a0 } /* Literal.String.Double */
body .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
body .sh { color: #4070a0 } /* Literal.String.Heredoc */
body .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
body .sx { color: #c65d09 } /* Literal.String.Other */
body .sr { color: #235388 } /* Literal.String.Regex */
body .s1 { color: #4070a0 } /* Literal.String.Single */
body .ss { color: #517918 } /* Literal.String.Symbol */
body .bp { color: #007020 } /* Name.Builtin.Pseudo */
body .vc { color: #bb60d5 } /* Name.Variable.Class */
body .vg { color: #bb60d5 } /* Name.Variable.Global */
body .vi { color: #bb60d5 } /* Name.Variable.Instance */
body .il { color: #40a070 } /* Literal.Number.Integer.Long */
</style>
<br />
<h2>
</h2>
<div class="highlight" style="background: #f0f0f0;">
<pre style="line-height: 125%;"><span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 1</span> <span style="color: #666666;"><?</span>php
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 2</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 3</span> <span style="color: #007020; font-weight: bold;">namespace</span> App;
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 4</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 5</span> <span style="color: #007020; font-weight: bold;">use</span> Illuminate\Database\Eloquent\Model;
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 6</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 7</span> <span style="color: #007020; font-weight: bold;">class</span> <span style="color: #0e84b5; font-weight: bold;">Produto</span> <span style="color: #007020; font-weight: bold;">extends</span> Model
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 8</span> {
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 9</span> <span style="color: #60a0b0; font-style: italic;">//</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">10</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">11</span> <span style="color: #007020; font-weight: bold;">protected</span> <span style="color: #bb60d5;">$table</span> <span style="color: #666666;">=</span> <span style="color: #4070a0;">'produto'</span>; <span style="color: #60a0b0; font-style: italic;">// Setando a tabela criada no Banco de dados</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">12</span> <span style="color: #007020; font-weight: bold;">protected</span> <span style="color: #bb60d5;">$primarykey</span> <span style="color: #666666;">=</span> <span style="color: #4070a0;">'id'</span>; <span style="color: #60a0b0; font-style: italic;">// setando a primary key da tabela produto</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">13</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">14</span> <span style="color: #007020; font-weight: bold;">public</span> <span style="color: #bb60d5;">$timestamps</span> <span style="color: #666666;">=</span> <span style="color: #007020; font-weight: bold;">true</span>; <span style="color: #60a0b0; font-style: italic;">// Registra data e hora da criação e atualização dos registros da tabela produto</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">15</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">16</span> <span style="color: #60a0b0; font-style: italic;">//carrega os campos da tabela produto</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">17</span> <span style="color: #007020; font-weight: bold;">protected</span> <span style="color: #bb60d5;">$fillable</span> <span style="color: #666666;">=</span> [
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">18</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">19</span> <span style="color: #4070a0;">'nome'</span>,
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">20</span> <span style="color: #4070a0;">'descricao'</span>,
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">21</span> <span style="color: #4070a0;">'preco'</span>,
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">22</span> <span style="color: #4070a0;">'status'</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">23</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">24</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">25</span> ];
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">26</span> }
</pre>
</div>
<br />
<span style="font-size: large;">Criando O Controller </span><br />
<br />
Vamos criar o Controller para inserir as operações que vão executar o CRUD em nosso sitema. Utilize o seguinte comando para criar o Controller:<br />
<br />
php artisan make:controller ProdutoController --resource<br />
Utilizando, no comando acima, a flag --resource, estamos informando ao Laravel que estamos criando um Controller como recurso, ou seja, um Controller para realizar operações no nosso BD. Automaticamente, ele já insere os métodos que iremos utilizar para realizar o CRUD:<br />
<br />
//Método responsável pela exibição da View que exibe os dados no navegador<br />
<b>public function index()</b>{}<br />
<br />
//Método responsável pela exibição da View na qual vamos criar os dados<br />
<b>public function create()</b>{}<br />
<br />
//Método responsável por receber e processar a requisição de criação dos dados.<br />
<b>public function store(Request $request)</b>{}<br />
<br />
//Método responsável por exibir um item de acordo com o seu id<br />
<b>public function show($id)</b>{}<br />
<br />
//Método responsável pela edição dos dados<br />
<b>public function edit($id)</b>{}<br />
<br />
//Método responsável por atualizar um dado de acordo com o seu id<br />
<b>public function update(Request $request, $id)</b>{}<br />
<br />
//Método responsável pela deleção dos dados.<br />
<b>public function destroy($id)</b>{}<br />
<br />
O nosso Controller vai ficar assim:<br />
<br />
<style type="text/css">
td.linenos { background-color: #f0f0f0; padding-right: 10px; }
span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }
pre { line-height: 125%; }
body .hll { background-color: #ffffcc }
body { background: #f0f0f0; }
body .c { color: #60a0b0; font-style: italic } /* Comment */
body .err { border: 1px solid #FF0000 } /* Error */
body .k { color: #007020; font-weight: bold } /* Keyword */
body .o { color: #666666 } /* Operator */
body .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
body .cp { color: #007020 } /* Comment.Preproc */
body .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
body .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
body .gd { color: #A00000 } /* Generic.Deleted */
body .ge { font-style: italic } /* Generic.Emph */
body .gr { color: #FF0000 } /* Generic.Error */
body .gh { color: #000080; font-weight: bold } /* Generic.Heading */
body .gi { color: #00A000 } /* Generic.Inserted */
body .go { color: #888888 } /* Generic.Output */
body .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
body .gs { font-weight: bold } /* Generic.Strong */
body .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
body .gt { color: #0044DD } /* Generic.Traceback */
body .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
body .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
body .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
body .kp { color: #007020 } /* Keyword.Pseudo */
body .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
body .kt { color: #902000 } /* Keyword.Type */
body .m { color: #40a070 } /* Literal.Number */
body .s { color: #4070a0 } /* Literal.String */
body .na { color: #4070a0 } /* Name.Attribute */
body .nb { color: #007020 } /* Name.Builtin */
body .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
body .no { color: #60add5 } /* Name.Constant */
body .nd { color: #555555; font-weight: bold } /* Name.Decorator */
body .ni { color: #d55537; font-weight: bold } /* Name.Entity */
body .ne { color: #007020 } /* Name.Exception */
body .nf { color: #06287e } /* Name.Function */
body .nl { color: #002070; font-weight: bold } /* Name.Label */
body .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
body .nt { color: #062873; font-weight: bold } /* Name.Tag */
body .nv { color: #bb60d5 } /* Name.Variable */
body .ow { color: #007020; font-weight: bold } /* Operator.Word */
body .w { color: #bbbbbb } /* Text.Whitespace */
body .mf { color: #40a070 } /* Literal.Number.Float */
body .mh { color: #40a070 } /* Literal.Number.Hex */
body .mi { color: #40a070 } /* Literal.Number.Integer */
body .mo { color: #40a070 } /* Literal.Number.Oct */
body .sb { color: #4070a0 } /* Literal.String.Backtick */
body .sc { color: #4070a0 } /* Literal.String.Char */
body .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
body .s2 { color: #4070a0 } /* Literal.String.Double */
body .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
body .sh { color: #4070a0 } /* Literal.String.Heredoc */
body .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
body .sx { color: #c65d09 } /* Literal.String.Other */
body .sr { color: #235388 } /* Literal.String.Regex */
body .s1 { color: #4070a0 } /* Literal.String.Single */
body .ss { color: #517918 } /* Literal.String.Symbol */
body .bp { color: #007020 } /* Name.Builtin.Pseudo */
body .vc { color: #bb60d5 } /* Name.Variable.Class */
body .vg { color: #bb60d5 } /* Name.Variable.Global */
body .vi { color: #bb60d5 } /* Name.Variable.Instance */
body .il { color: #40a070 } /* Literal.Number.Integer.Long */
</style>
<br />
<h2>
</h2>
<div class="highlight" style="background: #f0f0f0;">
<pre style="line-height: 125%;"><span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 1</span> <span style="color: #666666;"><?</span>php
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 2</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 3</span> <span style="color: #007020; font-weight: bold;">namespace</span> App\Http\Controllers;
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 4</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 5</span> <span style="color: #007020; font-weight: bold;">use</span> Illuminate\Http\Request;
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 6</span> <span style="color: #007020; font-weight: bold;">use</span> App\Produto; <span style="color: #60a0b0; font-style: italic;">//Inserção da Model Produto</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 7</span> <span style="color: #007020; font-weight: bold;">use</span> Illuminate\Support\Facades\Redirect; <span style="color: #60a0b0; font-style: italic;">// Para que sejam aceitos os redirecionamentos dentro das rotas</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 8</span> <span style="color: #007020; font-weight: bold;">use</span> Illuminate\Support\Facades\Input;
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 9</span> <span style="color: #007020; font-weight: bold;">use</span> App\Http\Requests\ProdutoFormRequest; <span style="color: #60a0b0; font-style: italic;">//Uso do request criado</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 10</span> <span style="color: #007020; font-weight: bold;">use</span> DB; <span style="color: #60a0b0; font-style: italic;">//Uso do banco de dados</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 11</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 12</span> <span style="color: #007020; font-weight: bold;">class</span> <span style="color: #0e84b5; font-weight: bold;">ProdutoController</span> <span style="color: #007020; font-weight: bold;">extends</span> Controller
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 13</span> {
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 14</span> <span style="color: #60a0b0; font-style: italic;">//Método padrão da classe. Todas as vezes que a classe é chamada, esse método é executado.</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 15</span> <span style="color: #007020; font-weight: bold;">public</span> <span style="color: #007020; font-weight: bold;">function</span> <span style="color: #06287e;">__construct</span>(){
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 16</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 17</span> }
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 18</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 19</span> <span style="color: #60a0b0; font-style: italic;">//Visualização dos dados</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 20</span> <span style="color: #007020; font-weight: bold;">public</span> <span style="color: #007020; font-weight: bold;">function</span> <span style="color: #06287e;">index</span>(Request <span style="color: #bb60d5;">$request</span>){
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 21</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 22</span> <span style="color: #60a0b0; font-style: italic;">//Se request é igual a true</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 23</span> <span style="color: #007020; font-weight: bold;">if</span>(<span style="color: #bb60d5;">$request</span>){
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 24</span> <span style="color: #bb60d5;">$query</span><span style="color: #666666;">=</span>trim(<span style="color: #bb60d5;">$request</span><span style="color: #666666;">-></span><span style="color: #4070a0;">get</span>(<span style="color: #4070a0;">'searchText'</span>));<span style="color: #60a0b0; font-style: italic;">//Vai capturar uma busca. O trim desconsidera os espaços digitados</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 25</span> <span style="color: #bb60d5;">$produtos</span><span style="color: #666666;">=</span>DB<span style="color: #666666;">::</span><span style="color: #4070a0;">table</span>(<span style="color: #4070a0;">'produto'</span>)
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 26</span> <span style="color: #666666;">-></span><span style="color: #4070a0;">where</span>(<span style="color: #4070a0;">'nome'</span>, <span style="color: #4070a0;">'LIKE'</span>, <span style="color: #4070a0;">'%'</span><span style="color: #666666;">.</span><span style="color: #bb60d5;">$query</span><span style="color: #666666;">.</span><span style="color: #4070a0;">'%'</span>) <span style="color: #60a0b0; font-style: italic;">//Buscando qualquer correspondência entre o texto digitado.</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 27</span> <span style="color: #666666;">-></span><span style="color: #4070a0;">where</span>(<span style="color: #4070a0;">'status'</span>, <span style="color: #4070a0;">'='</span>, <span style="color: #4070a0;">'ativo'</span>) <span style="color: #60a0b0; font-style: italic;">//Vão ser exibidas nessa página somente os produtos ativos.</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 28</span> <span style="color: #666666;">-></span><span style="color: #4070a0;">orderBy</span>(<span style="color: #4070a0;">'id'</span>,<span style="color: #4070a0;">'desc'</span>) <span style="color: #60a0b0; font-style: italic;">//A busca sera ordenada pelo campo id. Vamos visualizar do maior para o menor.</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 29</span> <span style="color: #666666;">-></span><span style="color: #4070a0;">paginate</span>(<span style="color: #40a070;">7</span>); <span style="color: #60a0b0; font-style: italic;">//Exibir 7 itens por página</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 30</span> <span style="color: #60a0b0; font-style: italic;">//Retorno da view index que estará dentro da pasta \resources\views\produto</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 31</span> <span style="color: #007020; font-weight: bold;">return</span> view(<span style="color: #4070a0;">'produto.index'</span>, [
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 32</span> <span style="color: #60a0b0; font-style: italic;">//Variável criada acima</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 33</span> <span style="color: #4070a0;">"produtos"</span><span style="color: #666666;">=></span><span style="color: #bb60d5;">$produtos</span>, <span style="color: #4070a0;">"searchText"</span><span style="color: #666666;">=></span><span style="color: #bb60d5;">$query</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 34</span> ]);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 35</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 36</span> }
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 37</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 38</span> }
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 39</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 40</span> <span style="color: #60a0b0; font-style: italic;">//Criar um produto</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 41</span> <span style="color: #007020; font-weight: bold;">public</span> <span style="color: #007020; font-weight: bold;">function</span> <span style="color: #06287e;">create</span>(){
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 42</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 43</span> <span style="color: #bb60d5;">$categorias</span><span style="color: #666666;">=</span>DB<span style="color: #666666;">::</span><span style="color: #4070a0;">table</span>(<span style="color: #4070a0;">'produto'</span>)
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 44</span> <span style="color: #666666;">-></span><span style="color: #4070a0;">where</span>(<span style="color: #4070a0;">'status'</span>, <span style="color: #4070a0;">'='</span>, <span style="color: #4070a0;">'ativo'</span>)
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 45</span> <span style="color: #666666;">-></span><span style="color: #4070a0;">get</span>();
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 46</span> <span style="color: #007020; font-weight: bold;">return</span> view(<span style="color: #4070a0;">"produto.create"</span>);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 47</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 48</span> }
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 49</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 50</span> <span style="color: #60a0b0; font-style: italic;">//Salvar os dados</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 51</span> <span style="color: #007020; font-weight: bold;">public</span> <span style="color: #007020; font-weight: bold;">function</span> <span style="color: #06287e;">store</span>(ProdutoFormRequest <span style="color: #bb60d5;">$request</span>){
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 52</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 53</span> <span style="color: #bb60d5;">$produto</span> <span style="color: #666666;">=</span> <span style="color: #007020; font-weight: bold;">new</span> Produto;
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 54</span> <span style="color: #bb60d5;">$produto</span><span style="color: #666666;">-></span><span style="color: #4070a0;">nome</span><span style="color: #666666;">=</span><span style="color: #bb60d5;">$request</span><span style="color: #666666;">-></span><span style="color: #4070a0;">get</span>(<span style="color: #4070a0;">'nome'</span>);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 55</span> <span style="color: #bb60d5;">$produto</span><span style="color: #666666;">-></span><span style="color: #4070a0;">descricao</span><span style="color: #666666;">=</span><span style="color: #bb60d5;">$request</span><span style="color: #666666;">-></span><span style="color: #4070a0;">get</span>(<span style="color: #4070a0;">'descricao'</span>);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 56</span> <span style="color: #bb60d5;">$produto</span><span style="color: #666666;">-></span><span style="color: #4070a0;">preco</span><span style="color: #666666;">=</span><span style="color: #bb60d5;">$request</span><span style="color: #666666;">-></span><span style="color: #4070a0;">get</span>(<span style="color: #4070a0;">'preco'</span>);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 57</span> <span style="color: #bb60d5;">$produto</span><span style="color: #666666;">-></span><span style="color: #4070a0;">status</span><span style="color: #666666;">=</span><span style="color: #4070a0;">'ativo'</span>;
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 58</span> <span style="color: #bb60d5;">$produto</span><span style="color: #666666;">-></span><span style="color: #4070a0;">save</span>();
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 59</span> <span style="color: #007020; font-weight: bold;">return</span> Redirect<span style="color: #666666;">::</span><span style="color: #4070a0;">to</span>(<span style="color: #4070a0;">'/produto'</span>);<span style="color: #60a0b0; font-style: italic;">//Assim que o produto for salvo, redirecionar para o index.</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 60</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 61</span> }
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 62</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 63</span> <span style="color: #60a0b0; font-style: italic;">//Visualização dos produtos</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 64</span> <span style="color: #007020; font-weight: bold;">public</span> <span style="color: #007020; font-weight: bold;">function</span> <span style="color: #06287e;">show</span>(<span style="color: #bb60d5;">$id</span>){
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 65</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 66</span> <span style="color: #007020; font-weight: bold;">return</span> view(<span style="color: #4070a0;">"produto.show"</span>,[
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 67</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 68</span> <span style="color: #60a0b0; font-style: italic;">//Mostrar o campo baseado no id do produto</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 69</span> <span style="color: #4070a0;">"produto"</span><span style="color: #666666;">=></span>Produto<span style="color: #666666;">::</span><span style="color: #4070a0;">findOrFail</span>(<span style="color: #bb60d5;">$id</span>)]);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 70</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 71</span> }
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 72</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 73</span> <span style="color: #60a0b0; font-style: italic;">//Editar um produto</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 74</span> <span style="color: #007020; font-weight: bold;">public</span> <span style="color: #007020; font-weight: bold;">function</span> <span style="color: #06287e;">edit</span>(<span style="color: #bb60d5;">$id</span>){
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 75</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 76</span> <span style="color: #007020; font-weight: bold;">return</span> view(<span style="color: #4070a0;">"produto.edit"</span>,[
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 77</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 78</span> <span style="color: #60a0b0; font-style: italic;">//Mostrar o campo baseado no id do produto</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 79</span> <span style="color: #4070a0;">"produto"</span><span style="color: #666666;">=></span>Produto<span style="color: #666666;">::</span><span style="color: #4070a0;">findOrFail</span>(<span style="color: #bb60d5;">$id</span>)]);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 80</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 81</span> }
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 82</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 83</span> <span style="color: #60a0b0; font-style: italic;">//Atualizar um produto</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 84</span> <span style="color: #007020; font-weight: bold;">public</span> <span style="color: #007020; font-weight: bold;">function</span> <span style="color: #06287e;">update</span>(ProdutoFormRequest <span style="color: #bb60d5;">$request</span>, <span style="color: #bb60d5;">$id</span>){
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 85</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 86</span> <span style="color: #bb60d5;">$produto</span><span style="color: #666666;">=</span>Produto<span style="color: #666666;">::</span><span style="color: #4070a0;">findOrFail</span>(<span style="color: #bb60d5;">$id</span>);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 87</span> <span style="color: #bb60d5;">$produto</span><span style="color: #666666;">-></span><span style="color: #4070a0;">nome</span><span style="color: #666666;">=</span><span style="color: #bb60d5;">$request</span><span style="color: #666666;">-></span><span style="color: #4070a0;">get</span>(<span style="color: #4070a0;">'nome'</span>);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 88</span> <span style="color: #bb60d5;">$produto</span><span style="color: #666666;">-></span><span style="color: #4070a0;">descricao</span><span style="color: #666666;">=</span><span style="color: #bb60d5;">$request</span><span style="color: #666666;">-></span><span style="color: #4070a0;">get</span>(<span style="color: #4070a0;">'descricao'</span>);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 89</span> <span style="color: #bb60d5;">$produto</span><span style="color: #666666;">-></span><span style="color: #4070a0;">preco</span><span style="color: #666666;">=</span><span style="color: #bb60d5;">$request</span><span style="color: #666666;">-></span><span style="color: #4070a0;">get</span>(<span style="color: #4070a0;">'preco'</span>);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 90</span> <span style="color: #bb60d5;">$produto</span><span style="color: #666666;">-></span><span style="color: #4070a0;">update</span>();
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 91</span> <span style="color: #60a0b0; font-style: italic;">//Após a atualização, redirecionar para:</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 92</span> <span style="color: #007020; font-weight: bold;">return</span> Redirect<span style="color: #666666;">::</span><span style="color: #4070a0;">to</span>(<span style="color: #4070a0;">'/produto'</span>);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 93</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 94</span> }
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 95</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 96</span> <span style="color: #60a0b0; font-style: italic;">//Deletar um produto</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 97</span> <span style="color: #007020; font-weight: bold;">public</span> <span style="color: #007020; font-weight: bold;">function</span> <span style="color: #06287e;">destroy</span>(<span style="color: #bb60d5;">$id</span>){
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 98</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 99</span> <span style="color: #bb60d5;">$produto</span><span style="color: #666666;">=</span>Produto<span style="color: #666666;">::</span><span style="color: #4070a0;">findOrFail</span>(<span style="color: #bb60d5;">$id</span>);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">100</span> <span style="color: #bb60d5;">$produto</span><span style="color: #666666;">-></span><span style="color: #4070a0;">status</span><span style="color: #666666;">=</span><span style="color: #4070a0;">'inativo'</span>;
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">101</span> <span style="color: #bb60d5;">$produto</span><span style="color: #666666;">-></span><span style="color: #4070a0;">update</span>();
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">102</span> <span style="color: #60a0b0; font-style: italic;">//Após a atualização, redirecionar para:</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">103</span> <span style="color: #007020; font-weight: bold;">return</span> Redirect<span style="color: #666666;">::</span><span style="color: #4070a0;">to</span>(<span style="color: #4070a0;">'/produto'</span>);
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">104</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">105</span> }
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">106</span> }
</pre>
</div>
<br />
<span style="font-size: large;">Criando O Request</span><br />
<span style="font-size: large;"><br /></span>
Vamos criar o Request para a validação dos dados enviados pelo usuário antes de realizarmos create ou update em nosso banco. Utilize o seguinte comando para criar o Request:<br />
<br />
<br />
php artisan make:request ProdutoFormRequest<br />
<br />
No arquivo criado, autorize o processamento das requisições alterando a seguinte função:<br />
<br />
<style type="text/css">
td.linenos { background-color: #f0f0f0; padding-right: 10px; }
span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }
pre { line-height: 125%; }
body .hll { background-color: #ffffcc }
body { background: #f0f0f0; }
body .c { color: #60a0b0; font-style: italic } /* Comment */
body .err { border: 1px solid #FF0000 } /* Error */
body .k { color: #007020; font-weight: bold } /* Keyword */
body .o { color: #666666 } /* Operator */
body .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
body .cp { color: #007020 } /* Comment.Preproc */
body .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
body .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
body .gd { color: #A00000 } /* Generic.Deleted */
body .ge { font-style: italic } /* Generic.Emph */
body .gr { color: #FF0000 } /* Generic.Error */
body .gh { color: #000080; font-weight: bold } /* Generic.Heading */
body .gi { color: #00A000 } /* Generic.Inserted */
body .go { color: #888888 } /* Generic.Output */
body .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
body .gs { font-weight: bold } /* Generic.Strong */
body .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
body .gt { color: #0044DD } /* Generic.Traceback */
body .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
body .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
body .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
body .kp { color: #007020 } /* Keyword.Pseudo */
body .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
body .kt { color: #902000 } /* Keyword.Type */
body .m { color: #40a070 } /* Literal.Number */
body .s { color: #4070a0 } /* Literal.String */
body .na { color: #4070a0 } /* Name.Attribute */
body .nb { color: #007020 } /* Name.Builtin */
body .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
body .no { color: #60add5 } /* Name.Constant */
body .nd { color: #555555; font-weight: bold } /* Name.Decorator */
body .ni { color: #d55537; font-weight: bold } /* Name.Entity */
body .ne { color: #007020 } /* Name.Exception */
body .nf { color: #06287e } /* Name.Function */
body .nl { color: #002070; font-weight: bold } /* Name.Label */
body .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
body .nt { color: #062873; font-weight: bold } /* Name.Tag */
body .nv { color: #bb60d5 } /* Name.Variable */
body .ow { color: #007020; font-weight: bold } /* Operator.Word */
body .w { color: #bbbbbb } /* Text.Whitespace */
body .mf { color: #40a070 } /* Literal.Number.Float */
body .mh { color: #40a070 } /* Literal.Number.Hex */
body .mi { color: #40a070 } /* Literal.Number.Integer */
body .mo { color: #40a070 } /* Literal.Number.Oct */
body .sb { color: #4070a0 } /* Literal.String.Backtick */
body .sc { color: #4070a0 } /* Literal.String.Char */
body .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
body .s2 { color: #4070a0 } /* Literal.String.Double */
body .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
body .sh { color: #4070a0 } /* Literal.String.Heredoc */
body .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
body .sx { color: #c65d09 } /* Literal.String.Other */
body .sr { color: #235388 } /* Literal.String.Regex */
body .s1 { color: #4070a0 } /* Literal.String.Single */
body .ss { color: #517918 } /* Literal.String.Symbol */
body .bp { color: #007020 } /* Name.Builtin.Pseudo */
body .vc { color: #bb60d5 } /* Name.Variable.Class */
body .vg { color: #bb60d5 } /* Name.Variable.Global */
body .vi { color: #bb60d5 } /* Name.Variable.Instance */
body .il { color: #40a070 } /* Literal.Number.Integer.Long */
</style>
<br />
<h2>
</h2>
<div class="highlight" style="background: #f0f0f0;">
<pre style="line-height: 125%;"><span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">1</span> <span style="color: #007020; font-weight: bold;">public</span> <span style="color: #007020; font-weight: bold;">function</span> <span style="color: #06287e;">authorize</span>()
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">2</span> {
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">3</span> <span style="color: #007020; font-weight: bold;">return</span> <span style="color: #007020; font-weight: bold;">false</span>;
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">4</span> }
</pre>
</div>
<br />
Para:<br />
<style type="text/css">
td.linenos { background-color: #f0f0f0; padding-right: 10px; }
span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }
pre { line-height: 125%; }
body .hll { background-color: #ffffcc }
body { background: #f0f0f0; }
body .c { color: #60a0b0; font-style: italic } /* Comment */
body .err { border: 1px solid #FF0000 } /* Error */
body .k { color: #007020; font-weight: bold } /* Keyword */
body .o { color: #666666 } /* Operator */
body .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
body .cp { color: #007020 } /* Comment.Preproc */
body .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
body .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
body .gd { color: #A00000 } /* Generic.Deleted */
body .ge { font-style: italic } /* Generic.Emph */
body .gr { color: #FF0000 } /* Generic.Error */
body .gh { color: #000080; font-weight: bold } /* Generic.Heading */
body .gi { color: #00A000 } /* Generic.Inserted */
body .go { color: #888888 } /* Generic.Output */
body .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
body .gs { font-weight: bold } /* Generic.Strong */
body .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
body .gt { color: #0044DD } /* Generic.Traceback */
body .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
body .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
body .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
body .kp { color: #007020 } /* Keyword.Pseudo */
body .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
body .kt { color: #902000 } /* Keyword.Type */
body .m { color: #40a070 } /* Literal.Number */
body .s { color: #4070a0 } /* Literal.String */
body .na { color: #4070a0 } /* Name.Attribute */
body .nb { color: #007020 } /* Name.Builtin */
body .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
body .no { color: #60add5 } /* Name.Constant */
body .nd { color: #555555; font-weight: bold } /* Name.Decorator */
body .ni { color: #d55537; font-weight: bold } /* Name.Entity */
body .ne { color: #007020 } /* Name.Exception */
body .nf { color: #06287e } /* Name.Function */
body .nl { color: #002070; font-weight: bold } /* Name.Label */
body .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
body .nt { color: #062873; font-weight: bold } /* Name.Tag */
body .nv { color: #bb60d5 } /* Name.Variable */
body .ow { color: #007020; font-weight: bold } /* Operator.Word */
body .w { color: #bbbbbb } /* Text.Whitespace */
body .mf { color: #40a070 } /* Literal.Number.Float */
body .mh { color: #40a070 } /* Literal.Number.Hex */
body .mi { color: #40a070 } /* Literal.Number.Integer */
body .mo { color: #40a070 } /* Literal.Number.Oct */
body .sb { color: #4070a0 } /* Literal.String.Backtick */
body .sc { color: #4070a0 } /* Literal.String.Char */
body .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
body .s2 { color: #4070a0 } /* Literal.String.Double */
body .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
body .sh { color: #4070a0 } /* Literal.String.Heredoc */
body .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
body .sx { color: #c65d09 } /* Literal.String.Other */
body .sr { color: #235388 } /* Literal.String.Regex */
body .s1 { color: #4070a0 } /* Literal.String.Single */
body .ss { color: #517918 } /* Literal.String.Symbol */
body .bp { color: #007020 } /* Name.Builtin.Pseudo */
body .vc { color: #bb60d5 } /* Name.Variable.Class */
body .vg { color: #bb60d5 } /* Name.Variable.Global */
body .vi { color: #bb60d5 } /* Name.Variable.Instance */
body .il { color: #40a070 } /* Literal.Number.Integer.Long */
</style>
<br />
<h2>
</h2>
<div class="highlight" style="background: #f0f0f0;">
<pre style="line-height: 125%;"><span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">1</span> <span style="color: #007020; font-weight: bold;">public</span> <span style="color: #007020; font-weight: bold;">function</span> <span style="color: #06287e;">authorize</span>()
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">2</span> {
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">3</span> <span style="color: #007020; font-weight: bold;">return</span> <span style="color: #007020; font-weight: bold;">true</span>;
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">4</span> }
</pre>
</div>
<br />
Meu arquivo Request ficou assim:<br />
<br />
<style type="text/css">
td.linenos { background-color: #f0f0f0; padding-right: 10px; }
span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }
pre { line-height: 125%; }
body .hll { background-color: #ffffcc }
body { background: #f0f0f0; }
body .c { color: #60a0b0; font-style: italic } /* Comment */
body .err { border: 1px solid #FF0000 } /* Error */
body .k { color: #007020; font-weight: bold } /* Keyword */
body .o { color: #666666 } /* Operator */
body .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
body .cp { color: #007020 } /* Comment.Preproc */
body .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
body .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
body .gd { color: #A00000 } /* Generic.Deleted */
body .ge { font-style: italic } /* Generic.Emph */
body .gr { color: #FF0000 } /* Generic.Error */
body .gh { color: #000080; font-weight: bold } /* Generic.Heading */
body .gi { color: #00A000 } /* Generic.Inserted */
body .go { color: #888888 } /* Generic.Output */
body .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
body .gs { font-weight: bold } /* Generic.Strong */
body .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
body .gt { color: #0044DD } /* Generic.Traceback */
body .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
body .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
body .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
body .kp { color: #007020 } /* Keyword.Pseudo */
body .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
body .kt { color: #902000 } /* Keyword.Type */
body .m { color: #40a070 } /* Literal.Number */
body .s { color: #4070a0 } /* Literal.String */
body .na { color: #4070a0 } /* Name.Attribute */
body .nb { color: #007020 } /* Name.Builtin */
body .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
body .no { color: #60add5 } /* Name.Constant */
body .nd { color: #555555; font-weight: bold } /* Name.Decorator */
body .ni { color: #d55537; font-weight: bold } /* Name.Entity */
body .ne { color: #007020 } /* Name.Exception */
body .nf { color: #06287e } /* Name.Function */
body .nl { color: #002070; font-weight: bold } /* Name.Label */
body .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
body .nt { color: #062873; font-weight: bold } /* Name.Tag */
body .nv { color: #bb60d5 } /* Name.Variable */
body .ow { color: #007020; font-weight: bold } /* Operator.Word */
body .w { color: #bbbbbb } /* Text.Whitespace */
body .mf { color: #40a070 } /* Literal.Number.Float */
body .mh { color: #40a070 } /* Literal.Number.Hex */
body .mi { color: #40a070 } /* Literal.Number.Integer */
body .mo { color: #40a070 } /* Literal.Number.Oct */
body .sb { color: #4070a0 } /* Literal.String.Backtick */
body .sc { color: #4070a0 } /* Literal.String.Char */
body .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
body .s2 { color: #4070a0 } /* Literal.String.Double */
body .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
body .sh { color: #4070a0 } /* Literal.String.Heredoc */
body .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
body .sx { color: #c65d09 } /* Literal.String.Other */
body .sr { color: #235388 } /* Literal.String.Regex */
body .s1 { color: #4070a0 } /* Literal.String.Single */
body .ss { color: #517918 } /* Literal.String.Symbol */
body .bp { color: #007020 } /* Name.Builtin.Pseudo */
body .vc { color: #bb60d5 } /* Name.Variable.Class */
body .vg { color: #bb60d5 } /* Name.Variable.Global */
body .vi { color: #bb60d5 } /* Name.Variable.Instance */
body .il { color: #40a070 } /* Literal.Number.Integer.Long */
</style>
<br />
<h2>
</h2>
<div class="highlight" style="background: #f0f0f0;">
<pre style="line-height: 125%;"><span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 1</span> <span style="color: #666666;"><?</span>php
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 2</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 3</span> <span style="color: #007020; font-weight: bold;">namespace</span> App\Http\Requests;
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 4</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 5</span> <span style="color: #007020; font-weight: bold;">use</span> Illuminate\Foundation\Http\FormRequest;
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 6</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 7</span> <span style="color: #007020; font-weight: bold;">class</span> <span style="color: #0e84b5; font-weight: bold;">ProdutoFormRequest</span> <span style="color: #007020; font-weight: bold;">extends</span> FormRequest
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 8</span> {
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;"> 9</span> <span style="color: #4070a0; font-style: italic;">/**</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">10</span> <span style="color: #4070a0; font-style: italic;"> * Determine if the user is authorized to make this request.</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">11</span> <span style="color: #4070a0; font-style: italic;"> *</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">12</span> <span style="color: #4070a0; font-style: italic;"> * @return bool</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">13</span> <span style="color: #4070a0; font-style: italic;"> */</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">14</span> <span style="color: #007020; font-weight: bold;">public</span> <span style="color: #007020; font-weight: bold;">function</span> <span style="color: #06287e;">authorize</span>()
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">15</span> {
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">16</span> <span style="color: #007020; font-weight: bold;">return</span> <span style="color: #007020; font-weight: bold;">true</span>;
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">17</span> }
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">18</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">19</span> <span style="color: #4070a0; font-style: italic;">/**</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">20</span> <span style="color: #4070a0; font-style: italic;"> * Get the validation rules that apply to the request.</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">21</span> <span style="color: #4070a0; font-style: italic;"> *</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">22</span> <span style="color: #4070a0; font-style: italic;"> * @return array</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">23</span> <span style="color: #4070a0; font-style: italic;"> */</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">24</span> <span style="color: #007020; font-weight: bold;">public</span> <span style="color: #007020; font-weight: bold;">function</span> <span style="color: #06287e;">rules</span>()
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">25</span> {
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">26</span> <span style="color: #007020; font-weight: bold;">return</span> [
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">27</span> <span style="color: #60a0b0; font-style: italic;">//</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">28</span> <span style="color: #4070a0;">'nome'</span><span style="color: #666666;">=></span><span style="color: #4070a0;">'required|max:191'</span>,
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">29</span> <span style="color: #4070a0;">'descricao'</span><span style="color: #666666;">=></span><span style="color: #4070a0;">'required|max:191'</span>,
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">30</span> <span style="color: #4070a0;">'preco'</span><span style="color: #666666;">=></span><span style="color: #4070a0;">'required|between:0,99999.99|regex:/^\d+(\.\d{1,2})?$/'</span>,
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">31</span> ];
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">32</span> }
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">33</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">34</span> <span style="color: #007020; font-weight: bold;">public</span> <span style="color: #007020; font-weight: bold;">function</span> <span style="color: #06287e;">messages</span>()
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">35</span> {
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">36</span> <span style="color: #007020; font-weight: bold;">return</span>[
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">37</span> <span style="color: #4070a0;">'preco.regex'</span> <span style="color: #666666;">=></span> <span style="color: #4070a0;">'Inserir . (ponto) em vez de , (vírgula) no preço.'</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">38</span> ];
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">39</span> }
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">40</span> }
</pre>
</div>
<br />
<span style="font-size: large;">Criando A Rota </span><br />
<span style="font-size: large;"><br /></span>
Vamos criar a rota para que o nosso Controller possa ser acessado pelo navegador. Para criar, abra o arquivo web.php do diretório \routes e insira o seguinte código ao final do arquivo:<br />
<br />
<style type="text/css">
td.linenos { background-color: #f0f0f0; padding-right: 10px; }
span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }
pre { line-height: 125%; }
body .hll { background-color: #ffffcc }
body { background: #f0f0f0; }
body .c { color: #60a0b0; font-style: italic } /* Comment */
body .err { border: 1px solid #FF0000 } /* Error */
body .k { color: #007020; font-weight: bold } /* Keyword */
body .o { color: #666666 } /* Operator */
body .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
body .cp { color: #007020 } /* Comment.Preproc */
body .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
body .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
body .gd { color: #A00000 } /* Generic.Deleted */
body .ge { font-style: italic } /* Generic.Emph */
body .gr { color: #FF0000 } /* Generic.Error */
body .gh { color: #000080; font-weight: bold } /* Generic.Heading */
body .gi { color: #00A000 } /* Generic.Inserted */
body .go { color: #888888 } /* Generic.Output */
body .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
body .gs { font-weight: bold } /* Generic.Strong */
body .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
body .gt { color: #0044DD } /* Generic.Traceback */
body .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
body .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
body .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
body .kp { color: #007020 } /* Keyword.Pseudo */
body .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
body .kt { color: #902000 } /* Keyword.Type */
body .m { color: #40a070 } /* Literal.Number */
body .s { color: #4070a0 } /* Literal.String */
body .na { color: #4070a0 } /* Name.Attribute */
body .nb { color: #007020 } /* Name.Builtin */
body .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
body .no { color: #60add5 } /* Name.Constant */
body .nd { color: #555555; font-weight: bold } /* Name.Decorator */
body .ni { color: #d55537; font-weight: bold } /* Name.Entity */
body .ne { color: #007020 } /* Name.Exception */
body .nf { color: #06287e } /* Name.Function */
body .nl { color: #002070; font-weight: bold } /* Name.Label */
body .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
body .nt { color: #062873; font-weight: bold } /* Name.Tag */
body .nv { color: #bb60d5 } /* Name.Variable */
body .ow { color: #007020; font-weight: bold } /* Operator.Word */
body .w { color: #bbbbbb } /* Text.Whitespace */
body .mf { color: #40a070 } /* Literal.Number.Float */
body .mh { color: #40a070 } /* Literal.Number.Hex */
body .mi { color: #40a070 } /* Literal.Number.Integer */
body .mo { color: #40a070 } /* Literal.Number.Oct */
body .sb { color: #4070a0 } /* Literal.String.Backtick */
body .sc { color: #4070a0 } /* Literal.String.Char */
body .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
body .s2 { color: #4070a0 } /* Literal.String.Double */
body .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
body .sh { color: #4070a0 } /* Literal.String.Heredoc */
body .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
body .sx { color: #c65d09 } /* Literal.String.Other */
body .sr { color: #235388 } /* Literal.String.Regex */
body .s1 { color: #4070a0 } /* Literal.String.Single */
body .ss { color: #517918 } /* Literal.String.Symbol */
body .bp { color: #007020 } /* Name.Builtin.Pseudo */
body .vc { color: #bb60d5 } /* Name.Variable.Class */
body .vg { color: #bb60d5 } /* Name.Variable.Global */
body .vi { color: #bb60d5 } /* Name.Variable.Instance */
body .il { color: #40a070 } /* Literal.Number.Integer.Long */
</style>
<br />
<h2>
</h2>
<div class="highlight" style="background: #f0f0f0;">
<pre style="line-height: 125%;"><span style="color: #60a0b0; font-style: italic;">//A rota é do tipo resource quando for necessário utilizar comunicação com o banco de dados</span>
Route<span style="color: #666666;">::</span><span style="color: #4070a0;">resource</span>(<span style="color: #4070a0;">'/produto'</span>,<span style="color: #4070a0;">'ProdutoController'</span>);
</pre>
</div>
<br />
<span style="font-size: large;">Instalando o Laravel Collective</span><br />
<span style="font-size: large;"><br /></span>
Vamos instalar um pacote para trabalhar mais facilmente com formulários Html chamado Laravel Collective. Para instalar, insira no arquivo composer.json a linha:<br />
<br />
<pre style="background-color: #fffcfa; color: #3d3d3d; font-size: 14px; line-height: 17.5px; overflow: auto; padding: 0.1em;"><span style="color: #4070a0;">"laravelcollective/html"</span><span style="border: 1px solid rgb(255, 0, 0);">:</span><span style="color: #4070a0;">"^5.3.0"</span></pre>
<pre style="background-color: #fffcfa; color: #3d3d3d; font-size: 14px; line-height: 17.5px; overflow: auto; padding: 0.1em;"><span style="color: #4070a0;">
</span></pre>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-UNRXdg2yKO0/XSywaVG_W2I/AAAAAAAAV78/dcwRCL7FwdIEutJw4Mt7_hmD9I5SMny1QCEwYBhgL/s1600/1%2B%25281%2529.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="535" data-original-width="180" src="https://1.bp.blogspot.com/-UNRXdg2yKO0/XSywaVG_W2I/AAAAAAAAV78/dcwRCL7FwdIEutJw4Mt7_hmD9I5SMny1QCEwYBhgL/s1600/1%2B%25281%2529.png" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
Essa nova linha vai ficar nesse trecho:</div>
<style type="text/css">
td.linenos { background-color: #f0f0f0; padding-right: 10px; }
span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px; }
pre { line-height: 125%; }
body .hll { background-color: #ffffcc }
body { background: #f0f0f0; }
body .c { color: #60a0b0; font-style: italic } /* Comment */
body .err { border: 1px solid #FF0000 } /* Error */
body .k { color: #007020; font-weight: bold } /* Keyword */
body .o { color: #666666 } /* Operator */
body .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
body .cp { color: #007020 } /* Comment.Preproc */
body .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
body .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
body .gd { color: #A00000 } /* Generic.Deleted */
body .ge { font-style: italic } /* Generic.Emph */
body .gr { color: #FF0000 } /* Generic.Error */
body .gh { color: #000080; font-weight: bold } /* Generic.Heading */
body .gi { color: #00A000 } /* Generic.Inserted */
body .go { color: #888888 } /* Generic.Output */
body .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
body .gs { font-weight: bold } /* Generic.Strong */
body .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
body .gt { color: #0044DD } /* Generic.Traceback */
body .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
body .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
body .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
body .kp { color: #007020 } /* Keyword.Pseudo */
body .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
body .kt { color: #902000 } /* Keyword.Type */
body .m { color: #40a070 } /* Literal.Number */
body .s { color: #4070a0 } /* Literal.String */
body .na { color: #4070a0 } /* Name.Attribute */
body .nb { color: #007020 } /* Name.Builtin */
body .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
body .no { color: #60add5 } /* Name.Constant */
body .nd { color: #555555; font-weight: bold } /* Name.Decorator */
body .ni { color: #d55537; font-weight: bold } /* Name.Entity */
body .ne { color: #007020 } /* Name.Exception */
body .nf { color: #06287e } /* Name.Function */
body .nl { color: #002070; font-weight: bold } /* Name.Label */
body .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
body .nt { color: #062873; font-weight: bold } /* Name.Tag */
body .nv { color: #bb60d5 } /* Name.Variable */
body .ow { color: #007020; font-weight: bold } /* Operator.Word */
body .w { color: #bbbbbb } /* Text.Whitespace */
body .mf { color: #40a070 } /* Literal.Number.Float */
body .mh { color: #40a070 } /* Literal.Number.Hex */
body .mi { color: #40a070 } /* Literal.Number.Integer */
body .mo { color: #40a070 } /* Literal.Number.Oct */
body .sb { color: #4070a0 } /* Literal.String.Backtick */
body .sc { color: #4070a0 } /* Literal.String.Char */
body .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
body .s2 { color: #4070a0 } /* Literal.String.Double */
body .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
body .sh { color: #4070a0 } /* Literal.String.Heredoc */
body .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
body .sx { color: #c65d09 } /* Literal.String.Other */
body .sr { color: #235388 } /* Literal.String.Regex */
body .s1 { color: #4070a0 } /* Literal.String.Single */
body .ss { color: #517918 } /* Literal.String.Symbol */
body .bp { color: #007020 } /* Name.Builtin.Pseudo */
body .vc { color: #bb60d5 } /* Name.Variable.Class */
body .vg { color: #bb60d5 } /* Name.Variable.Global */
body .vi { color: #bb60d5 } /* Name.Variable.Instance */
body .il { color: #40a070 } /* Literal.Number.Integer.Long */
</style>
<br />
<h2>
</h2>
<div class="highlight" style="background: #f0f0f0;">
<pre style="line-height: 125%;"><span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">1</span> <span style="color: #4070a0;">"license"</span><span style="border: 1px solid #FF0000;">:</span> <span style="color: #4070a0;">"MIT"</span><span style="border: 1px solid #FF0000;">,</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">2</span> <span style="color: #4070a0;">"require"</span><span style="border: 1px solid #FF0000;">:</span> {
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">3</span> <span style="color: #062873; font-weight: bold;">"php"</span>: <span style="color: #4070a0;">"^7.1.3"</span>,
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">4</span> <span style="color: #062873; font-weight: bold;">"fideloper/proxy"</span>: <span style="color: #4070a0;">"^4.0"</span>,
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">5</span> <span style="color: #062873; font-weight: bold;">"laravel/framework"</span>: <span style="color: #4070a0;">"5.8.*"</span>,
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">6</span> <span style="color: #062873; font-weight: bold;">"laravel/tinker"</span>: <span style="color: #4070a0;">"^1.0"</span>,
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">7</span> <span style="color: #062873; font-weight: bold;">"laravelcollective/html"</span>:<span style="color: #4070a0;">"^5.8.0"</span>
<span style="background-color: #f0f0f0; padding: 0 5px 0 5px;">8</span> }<span style="border: 1px solid #FF0000;">,</span>
</pre>
</div>
<br />
Inserir também no arquivo app.php do diretório \config o seguinte trecho dentro do bloco 'providers' => [ ... ]:<br />
<br />
<pre style="background-color: #fffcfa; color: #3d3d3d; font-size: 14px; line-height: 17.5px; overflow: auto; padding: 0.1em;">Collective\Html\HtmlServiceProvider<span style="color: #666666;">::</span><span style="color: #4070a0;">class</span>, </pre>
<br />
Inserir nesse mesmo arquivo, dentro do bloco códigos 'aliases' => [ ... ], o seguinte código:
<br />
<br />
<pre style="background-color: #fffcfa; color: #3d3d3d; font-size: 14px; line-height: 17.5px; overflow: auto; padding: 0.1em;"> <span style="color: #4070a0;">'Form'</span> <span style="color: #666666;">=></span> Collective\Html\FormFacade<span style="color: #666666;">::</span><span style="color: #4070a0;">class</span>,
<span style="color: #4070a0;">'Html'</span> <span style="color: #666666;">=></span> Collective\Html\HtmlFacade<span style="color: #666666;">::</span><span style="color: #4070a0;">class</span>,</pre>
<br />
Na linha de comando, execute agora o comando composer update para instalar o pacote:
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-NVU2VBiFc0o/XSyxQ-_VX2I/AAAAAAAAV8E/lvFxCmZPmYk7_5yKPKMgxLW8HPLrIEqxwCLcBGAs/s1600/1%2B%25282%2529.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="377" data-original-width="596" height="252" src="https://1.bp.blogspot.com/-NVU2VBiFc0o/XSyxQ-_VX2I/AAAAAAAAV8E/lvFxCmZPmYk7_5yKPKMgxLW8HPLrIEqxwCLcBGAs/s400/1%2B%25282%2529.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-size: large;">Criando as Views</span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
Vamos criar as views para a visualização dos dados e chamada das ações que criamos no nosso Controller para a realização do CRUD.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Crie a pasta produto dentro do diretório \resources\views</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Dentro do diretório criado(\resources\views\produto) vamos criar os arquivos:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<b>index.blade.php</b> // View para listar os produtos existentes no banco</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<b>create.blade.php</b> // View que vai exibir um formulário para criar um produto</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<b>edit.blade.php </b>// View que vai exibir um formulário para editar um produto</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<b>modal.blade.php</b> // Modal que vai confirmar a exclusão de um produto</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<b>search.blade.php</b> // Pesquisa de produtos</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
O conteúdo de todos esses arquivos poderá ser visualizado no link que do projeto no GitHub (disponível no final do post).</div>
<div style="text-align: center;">
<br /></div>
<span style="font-size: large;">Inserindo um layout personalizado </span><br />
<br />
Vamos utilizar em nossa aplicação um layout gratuito que baixei do site <a href="https://www.creative-tim.com/bootstrap-themes/free" target="_blank">Creative Tim</a>. Veja no fim do post um link específico para baixar os arquivos do layout no Github (pra quem quiser realizar o passo a passo separadamente). Para aplicar o novo layout, copie na pasta do layout, a pasta assets para o diretório /public do nosso projeto e crie a pasta layouts dentro de \resources\views.<br />
<br />
Salve o template como layout.blade.php dentro do diretório que você criou (\resources\views\layouts)<br />
<br />
Altere a chamada do css para a chamada padrão do laravel dentro do arquivo layout.blade.php:<br />
<br />
<link href="{{asset('assets/css/material-dashboard.css?v=2.1.1')}}" rel="stylesheet" /><br />
<br />
Insira a chamada de conteúdo na área do conteúdo:<br />
<br />
@yield('conteudo')<br />
<br />
Nos arquivos que criamos no diretório \resources\views\produto, insira a extensão do layout e a declaração de que se tratam de áreas de conteúdo:<br />
<br />
@extends('layouts.layout');<br />
<br />
@section('conteudo')<br />
<br />
Link do projeto no GitHub:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://github.com/keniaferreira/sistema_vendas_crud_produto" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;" target="_blank"><img border="0" data-original-height="128" data-original-width="128" src="https://1.bp.blogspot.com/-qASfd_3a4uM/XSyxvhVxHeI/AAAAAAAAV8M/2oNz5s7a6-A1ajBlf4ZVczohrsJksv6DwCLcBGAs/s1600/iconfinder_github_1608908%2B%25281%2529.png" /></a><span id="goog_1223613204"></span><a href="https://www.blogger.com/"></a><span id="goog_1223613205"></span></div>
<br />
<div class="separator" style="clear: both; text-align: left;">
Link do layout utilizado:</div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://github.com/keniaferreira/layout_crud_produto" target="_blank"><img border="0" data-original-height="128" data-original-width="128" src="https://1.bp.blogspot.com/-hx9QNSHoz7Q/XSyx07B-72I/AAAAAAAAV8Q/Pdd6hLtS9IIdIDEDY9e0Z-zQ_ur5OCrTwCLcBGAs/s1600/iconfinder_github_1107228%2B%25281%2529.png" /></a></div>
<br />Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com1tag:blogger.com,1999:blog-33852002.post-67877507394308481772019-07-05T00:58:00.000-03:002019-07-05T00:58:00.164-03:00Xampp - Alterar DocumentRootEssa configuração é útil para que quando você inicie o seu Xampp e digite a url http://localhost no seu navegador, ele já direcione direto para a pasta de um projeto específico.<br />
<br />
Siga os passos:<br />
<br />
1 - Acesse o painel do Xampp e no ícone Config do Apache, selecione a opção httpd.conf:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-4_UHnCm6IN0/XQjLId3sLqI/AAAAAAAAVr8/sbygTpT3Z9Q2JR3240HjJtFcHWD6CVsSwCLcBGAs/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="439" data-original-width="756" height="232" src="https://1.bp.blogspot.com/-4_UHnCm6IN0/XQjLId3sLqI/AAAAAAAAVr8/sbygTpT3Z9Q2JR3240HjJtFcHWD6CVsSwCLcBGAs/s400/1.png" width="400" /></a></div>
<br />
2 - Ao abrir o arquivo, dê um ctrl+f e pesquise por DocumentRoot:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-Y5U9ZO5be5M/XQjLOk6UhSI/AAAAAAAAVsA/e3fSUXKNXD0jDO1vTSCW6Esr4LdnW5X2wCLcBGAs/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="531" data-original-width="899" height="236" src="https://1.bp.blogspot.com/-Y5U9ZO5be5M/XQjLOk6UhSI/AAAAAAAAVsA/e3fSUXKNXD0jDO1vTSCW6Esr4LdnW5X2wCLcBGAs/s400/2.png" width="400" /></a></div>
<br />
Você vai encontrar uma sessão parecida com esta(nós vamos alterar a linha do contorno vermelho):<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-op_oipKenvo/XQjLVramS8I/AAAAAAAAVsE/-7iBTmWM9_wMzKYMzEbxhU78g0Huw1XuwCLcBGAs/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="531" data-original-width="899" height="236" src="https://1.bp.blogspot.com/-op_oipKenvo/XQjLVramS8I/AAAAAAAAVsE/-7iBTmWM9_wMzKYMzEbxhU78g0Huw1XuwCLcBGAs/s400/3.png" width="400" /></a></div>
<br />
3 - Altere essa linha para informar o novo caminho a ser acessado. Alterei o meu da seguinte forma:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-b8zUKJndbKs/XQjLaOioDOI/AAAAAAAAVsM/97kq02yoqFUm9QCoHmJr0dj7rRtjy7OgQCLcBGAs/s1600/4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="531" data-original-width="899" height="236" src="https://1.bp.blogspot.com/-b8zUKJndbKs/XQjLaOioDOI/AAAAAAAAVsM/97kq02yoqFUm9QCoHmJr0dj7rRtjy7OgQCLcBGAs/s400/4.png" width="400" /></a></div>
<br />
<br />
4 - Basta salvar o arquivo e reiniciar o Apache (clique na oção Stop, em seguida em Start):<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-zTkTQHlbG88/XQjLeC-6BPI/AAAAAAAAVsQ/IfpCXoBD6B48iCkUW1QoPM1AOGmtQ5pRACLcBGAs/s1600/5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="441" data-original-width="684" height="257" src="https://1.bp.blogspot.com/-zTkTQHlbG88/XQjLeC-6BPI/AAAAAAAAVsQ/IfpCXoBD6B48iCkUW1QoPM1AOGmtQ5pRACLcBGAs/s400/5.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-RS7mzmUHq6w/XRs-2DMRYuI/AAAAAAAAVt8/jzXke-A8gCQAIr0KBJSF-5RmmrAV2YOSgCLcBGAs/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="441" data-original-width="681" height="258" src="https://1.bp.blogspot.com/-RS7mzmUHq6w/XRs-2DMRYuI/AAAAAAAAVt8/jzXke-A8gCQAIr0KBJSF-5RmmrAV2YOSgCLcBGAs/s400/3.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
A partir de agora, toda vez que você digitar a url localhost, será redirecionado diretamente para o seu projeto:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-HaeHVS5NcHM/XQjLhy2VzoI/AAAAAAAAVsY/usLe6k0vBrEWrrMK6Me5Lgi1gCiijkRfgCLcBGAs/s1600/7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="728" data-original-width="1366" height="212" src="https://1.bp.blogspot.com/-HaeHVS5NcHM/XQjLhy2VzoI/AAAAAAAAVsY/usLe6k0vBrEWrrMK6Me5Lgi1gCiijkRfgCLcBGAs/s400/7.png" width="400" /></a></div>
<br />Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com0tag:blogger.com,1999:blog-33852002.post-89618233733190220592019-06-28T00:30:00.000-03:002019-07-02T08:16:52.843-03:00Git - Clonar Os Arquivos de Um Repositório Remoto Para Uma Pasta LocalNesse post, vamos aprender a clonar arquivos de um repositório remoto do GitHub para uma pasta local em nosso PC utilizando o Git.<br />
<br />
O passo a passo é super simples. Primeiro vamos acessar o diretório que queremos clonar e clicar no link 'Clone or download' para copiar a url:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-WHqMSpCLtrg/XNjVFOvJNWI/AAAAAAAAVQw/6BUBlUSt648LGMoyuwfFEofEikAA62fTQCLcBGAs/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="625" data-original-width="1325" height="187" src="https://1.bp.blogspot.com/-WHqMSpCLtrg/XNjVFOvJNWI/AAAAAAAAVQw/6BUBlUSt648LGMoyuwfFEofEikAA62fTQCLcBGAs/s400/1.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
No seu pc, vá até a pasta na qual você quer que seja criada a nova pasta com o seu repositório e clique com o botão direito do mouse sobre ela para iniciar o Git Bash. Utilizei a pasta htdocs do Xampp:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-LUycylGVKe0/XNjXwTLaOaI/AAAAAAAAVRU/xEmjBNwrubQOv8zDIukWNTwRYWw6iRlPQCLcBGAs/s1600/5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="590" data-original-width="907" height="260" src="https://4.bp.blogspot.com/-LUycylGVKe0/XNjXwTLaOaI/AAAAAAAAVRU/xEmjBNwrubQOv8zDIukWNTwRYWw6iRlPQCLcBGAs/s400/5.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Você vai utilizar no Git Bash o comando git clone em conjunto com a url do repositório que você copiou. O meu comando ficou assim: git clone https://github.com/keniaferreira/TesteGit.git</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-GM1LXJBVTks/XNjYC7PfAqI/AAAAAAAAVRc/m4MBiNIeTn4U-eHRk56q1YPlRPjfwsfEwCLcBGAs/s1600/6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="370" data-original-width="581" height="253" src="https://1.bp.blogspot.com/-GM1LXJBVTks/XNjYC7PfAqI/AAAAAAAAVRc/m4MBiNIeTn4U-eHRk56q1YPlRPjfwsfEwCLcBGAs/s400/6.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Basta executá-lo agora no Git Bash:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-kDI9vcyZRFo/XNjYZhKWvtI/AAAAAAAAVRk/jOtAk1ZXme45VytpGllpkt8UHn-S5_zgACLcBGAs/s1600/7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="370" data-original-width="581" height="253" src="https://3.bp.blogspot.com/-kDI9vcyZRFo/XNjYZhKWvtI/AAAAAAAAVRk/jOtAk1ZXme45VytpGllpkt8UHn-S5_zgACLcBGAs/s400/7.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: justify;">
Prontinho! Pode verificar que a sua pasta com o diretório remoto foi criada e os arquivos foram baixados:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-7tRQ90dmOPQ/XNjY0N1RB5I/AAAAAAAAVRw/truCygWBRQI-lLMj6DJdqG-VF-QlttoDgCLcBGAs/s1600/9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="273" data-original-width="905" height="120" src="https://4.bp.blogspot.com/-7tRQ90dmOPQ/XNjY0N1RB5I/AAAAAAAAVRw/truCygWBRQI-lLMj6DJdqG-VF-QlttoDgCLcBGAs/s400/9.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-NyJfFKaHHtM/XNjY0Fx0jlI/AAAAAAAAVRs/WW9N48wBjksz2Mkc0ltDzfdd0Zr4jzmbgCLcBGAs/s1600/8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="329" data-original-width="905" height="145" src="https://4.bp.blogspot.com/-NyJfFKaHHtM/XNjY0Fx0jlI/AAAAAAAAVRs/WW9N48wBjksz2Mkc0ltDzfdd0Zr4jzmbgCLcBGAs/s400/8.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<br />
<br />
<br />Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com0tag:blogger.com,1999:blog-33852002.post-17004026833259911072019-06-21T18:50:00.000-03:002019-06-21T18:50:00.588-03:00Primeiros Passos Com Git & GitHubOlá, pessoal! O objetivo desse post é ensinar os primeiros passos para se trabalhar com o Git e o GitHub. Nós vamos executar as seguintes tarefas com a ajuda desse post:<br />
<br />
1 - Criar uma conta no GitHub;<br />
2 - Instalar o Git;<br />
3 - Gerar uma chave SSH que seu computador vai usar pra se autorizar com o Github;<br />
4 - Criar um repositório no GitHub;<br />
5 - Enviar os arquivos de uma pasta com o Git para o nosso repositório no GitHub.<br />
<br />
Primeiro, vamos saber o que é Git e o que é o GitHub.<br />
<br />
Git - O sistema de controle de versão distribuído. Com ele é possível trazer de volta aquele arquivo que você apagou sem querer, voltar em algum ponto específico no seu projeto, compartilhar código de um projeto com seus colegas para trabalho em equipe, etc.<br />
<br />
GitHub - É uma plataforma de hospedagem de código-fonte com controle de versão usando o Git. Ele permite que programadores, utilitários ou qualquer usuário cadastrado na plataforma contribuam em projetos privados e/ou Open Source de qualquer lugar do mundo. Wikipédia<br />
<br />
Com o GitHub, você pode criar diretórios públicos ou privados para guardar seus projetos.<br />
<br />
<span style="font-size: large;">Criar uma conta no GitHub</span><br />
<br />
Vamos iniciar criando uma conta no GitHub. <a href="https://github.com/" target="_blank">Acesse o site</a> e preencha suas informações:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-qAV7BddQRUE/XNizCmllaxI/AAAAAAAAVJU/bjOVErJpOog-DWDJlZzjd6Elj_ZU_hWrgCLcBGAs/s1600/17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="728" data-original-width="1326" height="218" src="https://1.bp.blogspot.com/-qAV7BddQRUE/XNizCmllaxI/AAAAAAAAVJU/bjOVErJpOog-DWDJlZzjd6Elj_ZU_hWrgCLcBGAs/s400/17.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="text-align: start;"><span style="font-size: large;"><br /></span></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="text-align: start;"><span style="font-size: large;">Instalar o Git</span></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="text-align: start;"><br /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
Agora vamos baixar o Git através do link: <a href="http://git-scm.com/" target="_blank">http://git-scm.com/</a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-Jkkk5Fr4xB4/XNiz-WArEzI/AAAAAAAAVJc/s3ssaytcsBABxyReAlzk_nv1TyP9lE7DQCLcBGAs/s1600/18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="728" data-original-width="1328" height="218" src="https://2.bp.blogspot.com/-Jkkk5Fr4xB4/XNiz-WArEzI/AAAAAAAAVJc/s3ssaytcsBABxyReAlzk_nv1TyP9lE7DQCLcBGAs/s400/18.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
Instalar o Git é super fácil. Execute o arquivo baixado e vá prosseguindo com as opções para instalar:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-aRTbcL4ixE0/XNi4opgk1FI/AAAAAAAAVJo/ndJx13wMCiYndZ3K44nLuBdpnCkestiMgCLcBGAs/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="389" data-original-width="500" height="310" src="https://3.bp.blogspot.com/-aRTbcL4ixE0/XNi4opgk1FI/AAAAAAAAVJo/ndJx13wMCiYndZ3K44nLuBdpnCkestiMgCLcBGAs/s400/1.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-d-S8wOWxv9Q/XNi4pOWjxvI/AAAAAAAAVJ0/p7Q2nigrqQcQAHpwZc7MXsD2Sg9rnBjzwCLcBGAs/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="389" data-original-width="500" height="310" src="https://3.bp.blogspot.com/-d-S8wOWxv9Q/XNi4pOWjxvI/AAAAAAAAVJ0/p7Q2nigrqQcQAHpwZc7MXsD2Sg9rnBjzwCLcBGAs/s400/2.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-EYlL8Rfb9cA/XNi4poNkRRI/AAAAAAAAVJ4/j6Bh21vrrwkPJcFgCWMPMr2R3qL8-KM9gCLcBGAs/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="389" data-original-width="500" height="310" src="https://4.bp.blogspot.com/-EYlL8Rfb9cA/XNi4poNkRRI/AAAAAAAAVJ4/j6Bh21vrrwkPJcFgCWMPMr2R3qL8-KM9gCLcBGAs/s400/3.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-pYW5YBCsCsQ/XNi4qGPNgnI/AAAAAAAAVJ8/fZqKtdvjSpIkXv3bL7QSNPP7BSlIVRCZwCLcBGAs/s1600/4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="389" data-original-width="500" height="310" src="https://4.bp.blogspot.com/-pYW5YBCsCsQ/XNi4qGPNgnI/AAAAAAAAVJ8/fZqKtdvjSpIkXv3bL7QSNPP7BSlIVRCZwCLcBGAs/s400/4.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-KQn1PWZmonM/XNi4qtXbUHI/AAAAAAAAVKA/FO6r9Hcrb4k0FSw1cN-1c_KmGVW0NZQOACLcBGAs/s1600/5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="389" data-original-width="500" height="310" src="https://1.bp.blogspot.com/-KQn1PWZmonM/XNi4qtXbUHI/AAAAAAAAVKA/FO6r9Hcrb4k0FSw1cN-1c_KmGVW0NZQOACLcBGAs/s400/5.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-bnJELyVDVDQ/XNi4rOHoufI/AAAAAAAAVKE/HVbyY79DxmkUkGPg336BEJf3qF1Vep7eQCLcBGAs/s1600/6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="389" data-original-width="500" height="310" src="https://2.bp.blogspot.com/-bnJELyVDVDQ/XNi4rOHoufI/AAAAAAAAVKE/HVbyY79DxmkUkGPg336BEJf3qF1Vep7eQCLcBGAs/s400/6.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-oqpeiYigT_g/XNi4rkN5MmI/AAAAAAAAVKI/XMbFEOs_MiEJXgvEnBLc-Hw_vP7m6dKSQCLcBGAs/s1600/7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="389" data-original-width="500" height="310" src="https://1.bp.blogspot.com/-oqpeiYigT_g/XNi4rkN5MmI/AAAAAAAAVKI/XMbFEOs_MiEJXgvEnBLc-Hw_vP7m6dKSQCLcBGAs/s400/7.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-MiVfHD3ONww/XNi4sHuuFbI/AAAAAAAAVKM/sITSh93wPHQtUi1J2hW8XZIw_0ADXPTTwCLcBGAs/s1600/8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="389" data-original-width="500" height="310" src="https://1.bp.blogspot.com/-MiVfHD3ONww/XNi4sHuuFbI/AAAAAAAAVKM/sITSh93wPHQtUi1J2hW8XZIw_0ADXPTTwCLcBGAs/s400/8.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-P5qr7K9Icp8/XNi4si8AsLI/AAAAAAAAVKQ/w9yGJ-YcThMBY420oLVkRSs2UtCkf8L9ACLcBGAs/s1600/9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="389" data-original-width="500" height="310" src="https://2.bp.blogspot.com/-P5qr7K9Icp8/XNi4si8AsLI/AAAAAAAAVKQ/w9yGJ-YcThMBY420oLVkRSs2UtCkf8L9ACLcBGAs/s400/9.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-VlGFwjkamt4/XNi4ouEqlxI/AAAAAAAAVJw/_PvVPnHcTOwCFs1EZBFu63gRsYLd60YXwCLcBGAs/s1600/10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="389" data-original-width="500" height="310" src="https://2.bp.blogspot.com/-VlGFwjkamt4/XNi4ouEqlxI/AAAAAAAAVJw/_PvVPnHcTOwCFs1EZBFu63gRsYLd60YXwCLcBGAs/s400/10.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-XvJFV9nKYTE/XNi4oqbn2cI/AAAAAAAAVJs/60DEIQnjKNIO8DO7vYL1eHOYBphDCkZagCLcBGAs/s1600/11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="389" data-original-width="500" height="310" src="https://1.bp.blogspot.com/-XvJFV9nKYTE/XNi4oqbn2cI/AAAAAAAAVJs/60DEIQnjKNIO8DO7vYL1eHOYBphDCkZagCLcBGAs/s400/11.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-oRlp0Mogy4Y/XNi5ii4q20I/AAAAAAAAVKs/uF31jpqi7548XNwT18nc-I1cMeFQJjGNgCLcBGAs/s1600/12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="389" data-original-width="500" height="310" src="https://2.bp.blogspot.com/-oRlp0Mogy4Y/XNi5ii4q20I/AAAAAAAAVKs/uF31jpqi7548XNwT18nc-I1cMeFQJjGNgCLcBGAs/s400/12.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Com a opção 'Launch Git Bash' selecionada, ao final da instalação vai ser aberto o Git Bash (terminal do Git):</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-hvZaG9uRRXQ/XNi6V7mpHlI/AAAAAAAAVK4/cGcI6ox3rlwpqCqI5RnurvaMwhB4lAJoACLcBGAs/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="370" data-original-width="581" height="253" src="https://4.bp.blogspot.com/-hvZaG9uRRXQ/XNi6V7mpHlI/AAAAAAAAVK4/cGcI6ox3rlwpqCqI5RnurvaMwhB4lAJoACLcBGAs/s400/1.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Digite os seguintes comandos para configurar seu usuário. Esses comandos são utilizados tanto para inserir quanto para alterar essas informações:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
git config --global user.name "Seu Nome"</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-h2SVtqZZlp8/XNi7OOn6YgI/AAAAAAAAVLA/m-0vV-ONbuo2WpUu1UhH0DxI3FmASF88gCLcBGAs/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="370" data-original-width="581" height="253" src="https://1.bp.blogspot.com/-h2SVtqZZlp8/XNi7OOn6YgI/AAAAAAAAVLA/m-0vV-ONbuo2WpUu1UhH0DxI3FmASF88gCLcBGAs/s400/2.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
git config --global user.email seu-email-no-github@example.com</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-tASCims-6do/XNi7Rbfx-TI/AAAAAAAAVLE/Rbhiu0lY1MkpjBxa0G_DPOL4lNgQRl5rwCLcBGAs/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="370" data-original-width="581" height="253" src="https://4.bp.blogspot.com/-tASCims-6do/XNi7Rbfx-TI/AAAAAAAAVLE/Rbhiu0lY1MkpjBxa0G_DPOL4lNgQRl5rwCLcBGAs/s400/3.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<span style="font-size: large;">Gerar uma chave SSH que seu computador vai usar pra se autorizar com o Github</span><br />
<br />
Agora vamos gerar uma chave SSH para que você não precise ficar inserindo sua senha toda vez que precisar realizar operações no GitHub.<br />
<br />
Digite o comando:<br />
<br />
ssh-keygen -t rsa -b 4096 -C "seu-email-no-github@dominio.com"<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-YKfxCc-c9So/XNi8Jj3LCEI/AAAAAAAAVLU/A70_yJ6yQckxveJ-krsJ0ZNdyeHghDphgCLcBGAs/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="370" data-original-width="581" height="253" src="https://2.bp.blogspot.com/-YKfxCc-c9So/XNi8Jj3LCEI/AAAAAAAAVLU/A70_yJ6yQckxveJ-krsJ0ZNdyeHghDphgCLcBGAs/s400/1.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
O resultado será:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-J0o0nb1YKZE/XNi8Y0DgHdI/AAAAAAAAVLY/ji_4SFMaZ0kCQCK3w5br4sq4egBlOIudgCLcBGAs/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="370" data-original-width="581" height="253" src="https://3.bp.blogspot.com/-J0o0nb1YKZE/XNi8Y0DgHdI/AAAAAAAAVLY/ji_4SFMaZ0kCQCK3w5br4sq4egBlOIudgCLcBGAs/s400/2.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Pressione Enter. Vai ser pedida agora uma senha. Essa senha será utilizada toda vez que você quiser baixar ou enviar algo para os seus repositórios no Git. Se não quiser ficar inserido senha toda hora, pode deixar sem e teclar Enter:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-yGePyuXsLHw/XNi8-Z2nK3I/AAAAAAAAVLk/sMXSlkn8M4k70t1CICDcwCGhXm549ukPACLcBGAs/s1600/4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="370" data-original-width="581" height="253" src="https://2.bp.blogspot.com/-yGePyuXsLHw/XNi8-Z2nK3I/AAAAAAAAVLk/sMXSlkn8M4k70t1CICDcwCGhXm549ukPACLcBGAs/s400/4.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Confirme a senha. Ou caso não tenha inserido, assim como eu, tecle Enter novamente:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-SGzO-OD3bso/XNi9LX__LoI/AAAAAAAAVLo/RXkSJSuFsgsuDcKvRLg6JrrqOlyn3W3OACLcBGAs/s1600/5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="370" data-original-width="581" height="253" src="https://1.bp.blogspot.com/-SGzO-OD3bso/XNi9LX__LoI/AAAAAAAAVLo/RXkSJSuFsgsuDcKvRLg6JrrqOlyn3W3OACLcBGAs/s400/5.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
O resultado será algo como:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-8dFvLCri6pU/XNi9bOdIeMI/AAAAAAAAVLw/QIcRBhK0lOMAU4CXOo1dqv0440IfFUFBwCLcBGAs/s1600/6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="370" data-original-width="581" height="253" src="https://1.bp.blogspot.com/-8dFvLCri6pU/XNi9bOdIeMI/AAAAAAAAVLw/QIcRBhK0lOMAU4CXOo1dqv0440IfFUFBwCLcBGAs/s400/6.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Precisamos adicionar a chave criada ao ssh-agent. Vamos ativá-lo com o comando:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
ssh-agent -s</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-5-LMLagrQ94/XNi94qMmTHI/AAAAAAAAVL8/TVK5zmbgmdwYbz_f9BP9wlIFvnXfYdZ-ACLcBGAs/s1600/7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="370" data-original-width="581" height="253" src="https://3.bp.blogspot.com/-5-LMLagrQ94/XNi94qMmTHI/AAAAAAAAVL8/TVK5zmbgmdwYbz_f9BP9wlIFvnXfYdZ-ACLcBGAs/s400/7.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
O resultado será algo como:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-lr4lYw5a8hI/XNi-D2BmOQI/AAAAAAAAVMA/lsvOf7TmmBwriB4fJVO9SK0iu04NbpN4QCLcBGAs/s1600/8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="370" data-original-width="581" height="253" src="https://1.bp.blogspot.com/-lr4lYw5a8hI/XNi-D2BmOQI/AAAAAAAAVMA/lsvOf7TmmBwriB4fJVO9SK0iu04NbpN4QCLcBGAs/s400/8.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Vamos agora, inserir a chave gerada ao ssh-agente com o comando:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
ssh-add ~/.ssh/id_rsa</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-At4iHuhuApY/XNi-pxbUvZI/AAAAAAAAVMM/CwBIBXR-bNUdbs_oiyFUCxuMJ5FVIFjfwCLcBGAs/s1600/9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="370" data-original-width="581" height="253" src="https://4.bp.blogspot.com/-At4iHuhuApY/XNi-pxbUvZI/AAAAAAAAVMM/CwBIBXR-bNUdbs_oiyFUCxuMJ5FVIFjfwCLcBGAs/s400/9.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Se aparecer o erro: Could not open a connection to your authentication agent. Ative o agente através do seguinte comando: eval `ssh-agent -s`</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Depois reinsira o comando: ssh-add ~/.ssh/id_rsa</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-VC_Khdnr4NU/XNjAmBjfQHI/AAAAAAAAVMY/mAFlDk6tdY4KMEJI_1Lsi68QOVmBD-WuwCLcBGAs/s1600/12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="370" data-original-width="581" height="253" src="https://4.bp.blogspot.com/-VC_Khdnr4NU/XNjAmBjfQHI/AAAAAAAAVMY/mAFlDk6tdY4KMEJI_1Lsi68QOVmBD-WuwCLcBGAs/s400/12.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Agora vamos associar a chave gerada com a nossa conta no GitHub:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Para copiar a chave do bash, digite um dos dois seguintes comandos:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
clip < ~/.ssh/id_rsa.pub </div>
<div class="separator" style="clear: both; text-align: justify;">
Ou </div>
<div class="separator" style="clear: both; text-align: justify;">
cat ~/.ssh/id_rsa.pub</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-EjKaywpnGrU/XNjB1ZZIuDI/AAAAAAAAVMo/tnPXJqntLTkXxyABe4SYHY7nvAJ53keMwCLcBGAs/s1600/13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="370" data-original-width="581" height="253" src="https://3.bp.blogspot.com/-EjKaywpnGrU/XNjB1ZZIuDI/AAAAAAAAVMo/tnPXJqntLTkXxyABe4SYHY7nvAJ53keMwCLcBGAs/s400/13.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Se você digitou o primeiro comando, a chave agora está no seu ctrl+v. </div>
<div class="separator" style="clear: both; text-align: justify;">
Se você utilizou o segundo comando, copie a chave selecionando-a diretamente no terminal.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Vamos inserir a chave agora no nosso GitHub. <a href="https://github.com/login" target="_blank">Faça Login no GitHub</a> e selecione a opção 'Settings' no menu à direita:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-LbZg7f38eVI/XNjCskVEkJI/AAAAAAAAVMw/zUPcFEQ41rcEQiX0q6LU2gr1oWRYATszgCLcBGAs/s1600/14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="728" data-original-width="1327" height="218" src="https://1.bp.blogspot.com/-LbZg7f38eVI/XNjCskVEkJI/AAAAAAAAVMw/zUPcFEQ41rcEQiX0q6LU2gr1oWRYATszgCLcBGAs/s400/14.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Escolha agora a opção 'SSH and GPG keys':</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-ntcKG7gc05U/XNjDFe8bxWI/AAAAAAAAVM4/oHFocCgat5gerFnayypXG_IfoAyk_sPsgCLcBGAs/s1600/15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="728" data-original-width="1328" height="218" src="https://1.bp.blogspot.com/-ntcKG7gc05U/XNjDFe8bxWI/AAAAAAAAVM4/oHFocCgat5gerFnayypXG_IfoAyk_sPsgCLcBGAs/s400/15.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Escolha a opção 'New SSH Key'</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-oGS2DlN7jqw/XNjD1X7PV2I/AAAAAAAAVNA/GmeYmFstB2wR-rysdwcAkZyt9SB4UmVVgCLcBGAs/s1600/16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="301" data-original-width="1327" height="90" src="https://1.bp.blogspot.com/-oGS2DlN7jqw/XNjD1X7PV2I/AAAAAAAAVNA/GmeYmFstB2wR-rysdwcAkZyt9SB4UmVVgCLcBGAs/s400/16.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Insira agora um título para sua chave, cole a chave que está em sua área de transferência e clique em 'Add SSH Key':</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-3PsfA4Xt43o/XNjEHyRonyI/AAAAAAAAVNI/gKJRg6UgTgQVAw1x4jWLMeOHmYKpyfQgACLcBGAs/s1600/17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="721" data-original-width="1326" height="216" src="https://2.bp.blogspot.com/-3PsfA4Xt43o/XNjEHyRonyI/AAAAAAAAVNI/gKJRg6UgTgQVAw1x4jWLMeOHmYKpyfQgACLcBGAs/s400/17.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Prontinho!</div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="text-align: start;"><br /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="text-align: start;"><span style="font-size: large;">Criar um repositório no GitHub</span></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="text-align: start;"><br /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="text-align: start;">Vamos começar a brincar agora. Feche o terminal e crie uma pasta qualquer para começar a praticar. Aqui no meu pc, eu criei a pasta 'TesteGit' dentro da pasta htdocs do Xampp, que utilizo como aplicativo para rodar um servidor local:</span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="text-align: start;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-8SMH_BN3oPA/XNjFJjcEzEI/AAAAAAAAVNU/BSx0cr39hl4Kkij5fY4O9rrTmS-WC-cWACLcBGAs/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="674" data-original-width="905" height="297" src="https://4.bp.blogspot.com/-8SMH_BN3oPA/XNjFJjcEzEI/AAAAAAAAVNU/BSx0cr39hl4Kkij5fY4O9rrTmS-WC-cWACLcBGAs/s400/1.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Em vez de abrir o terminal através do atalho do Git em seu menu iniciar e navegar até a pasta do projeto desejado, você pode, sempre que quiser, clicar com um botão direito na pasta que você vai trabalhar e selecionar a opção 'Git Bash Here':</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-BuxlfDL5pqU/XNjGJJJVq_I/AAAAAAAAVNc/1ElQDKe5KNgZXStj1JKCR5wh6p8r8MqvACLcBGAs/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="679" data-original-width="906" height="298" src="https://2.bp.blogspot.com/-BuxlfDL5pqU/XNjGJJJVq_I/AAAAAAAAVNc/1ElQDKe5KNgZXStj1JKCR5wh6p8r8MqvACLcBGAs/s400/2.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Pronto. Você abriu o terminal já localizado dentro da pasta que você vai trabalhar:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-5LUQSj7sQYA/XNjGePYTPrI/AAAAAAAAVNk/W3NE4K4mYEQvWUDCCswylhHDbATMgV4qwCLcBGAs/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="371" data-original-width="579" height="256" src="https://3.bp.blogspot.com/-5LUQSj7sQYA/XNjGePYTPrI/AAAAAAAAVNk/W3NE4K4mYEQvWUDCCswylhHDbATMgV4qwCLcBGAs/s400/3.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Você vai digitar agora o comando git init para iniciar o Git dentro desse repositório:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-4y0ft3mlNTg/XNjG49rez4I/AAAAAAAAVNw/qC9lm0aqlFQ2nr6RU5r3vQyWNsgO3lKpwCLcBGAs/s1600/4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="371" data-original-width="581" height="255" src="https://2.bp.blogspot.com/-4y0ft3mlNTg/XNjG49rez4I/AAAAAAAAVNw/qC9lm0aqlFQ2nr6RU5r3vQyWNsgO3lKpwCLcBGAs/s400/4.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-oCNhBG_ugzc/XNjG4wJUS1I/AAAAAAAAVNs/dQolcAHca4gjeKAzYYqdo5fHC5sf6t6hwCEwYBhgL/s1600/5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="371" data-original-width="581" height="255" src="https://4.bp.blogspot.com/-oCNhBG_ugzc/XNjG4wJUS1I/AAAAAAAAVNs/dQolcAHca4gjeKAzYYqdo5fHC5sf6t6hwCEwYBhgL/s400/5.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="text-align: start;"><br /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Verifique que foi criada uma pasta com o nome .git no seu repositório. Ela é um arquivo oculto. Você não pode deletar essa pasta. Caso ela seja deletada, o Git pára de funcionar dentro do repositório:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-dOQ7lQp8kE8/XNjHSl7fSpI/AAAAAAAAVN8/dUFEyb3O5IEFUHWhKfpZ0fAL6FChguHwgCLcBGAs/s1600/6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="364" data-original-width="905" height="160" src="https://1.bp.blogspot.com/-dOQ7lQp8kE8/XNjHSl7fSpI/AAAAAAAAVN8/dUFEyb3O5IEFUHWhKfpZ0fAL6FChguHwgCLcBGAs/s400/6.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Vamos criar manualmente agora, 1 arquivo de texto em branco em nossa pasta com o nome 'primeiro arquivo'.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-mwSZ8f7sNjQ/XNjJcA8e64I/AAAAAAAAVOc/Hc-i_0o38vISqwx6vWal3ibyyOYmlNATACLcBGAs/s1600/10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="267" data-original-width="905" height="117" src="https://2.bp.blogspot.com/-mwSZ8f7sNjQ/XNjJcA8e64I/AAAAAAAAVOc/Hc-i_0o38vISqwx6vWal3ibyyOYmlNATACLcBGAs/s400/10.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Vamos adicionar esse arquivo ao nosso controle de versão com o comando git add primeiroarquivo.txt:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-vsBFFd96odc/XNjJLOQr4uI/AAAAAAAAVOQ/ZzbkwOXHjas-r1_g4Lbbw1p_nHxzFoDbQCLcBGAs/s1600/9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="370" data-original-width="582" height="253" src="https://1.bp.blogspot.com/-vsBFFd96odc/XNjJLOQr4uI/AAAAAAAAVOQ/ZzbkwOXHjas-r1_g4Lbbw1p_nHxzFoDbQCLcBGAs/s400/9.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Vou dar meu primeiro commit com o comando git commit -m "Mensagem":</div>
<div class="separator" style="clear: both; text-align: justify;">
O commit é um comando utilizado para que você possa informar as suas alterações, fazendo assim o controle de versões do seu projeto.</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-3Ri8iFV26p4/XNjKXUKykSI/AAAAAAAAVOs/14lDcyBlqNojp5UG1jgKCSLdZaVclsDYgCLcBGAs/s1600/12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="370" data-original-width="582" height="253" src="https://1.bp.blogspot.com/-3Ri8iFV26p4/XNjKXUKykSI/AAAAAAAAVOs/14lDcyBlqNojp5UG1jgKCSLdZaVclsDYgCLcBGAs/s400/12.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-moRPtIqh1e4/XNjKiJNf5jI/AAAAAAAAVOw/SceQkTewUWYXw0CeE0fJSthN81g4igH6QCLcBGAs/s1600/13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="370" data-original-width="582" height="253" src="https://2.bp.blogspot.com/-moRPtIqh1e4/XNjKiJNf5jI/AAAAAAAAVOw/SceQkTewUWYXw0CeE0fJSthN81g4igH6QCLcBGAs/s400/13.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Criei manualmente na pasta mais dois arquivos de texto segundoarquivo.txt e terceiroarquivo.txt:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-F6ngwnsC_qo/XNjJz3VsEYI/AAAAAAAAVOk/p_l3jZiuMoguhS2rNAwnhCLHVBxdqLZvQCLcBGAs/s1600/11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="301" data-original-width="905" height="106" src="https://4.bp.blogspot.com/-F6ngwnsC_qo/XNjJz3VsEYI/AAAAAAAAVOk/p_l3jZiuMoguhS2rNAwnhCLHVBxdqLZvQCLcBGAs/s320/11.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Pra não ter que inserir um por um ao meu controle de versão, vou utilizar o comando git add . para inserir todos os arquivos ao controle de versão (o ponto final faz parte desse comando, não se esqueça de inserí-lo):</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-yVw_sVngZ_w/XNjLLTdbXNI/AAAAAAAAVPA/ZtVlpcNXwK4qHg3DF28nDfVXSbKMGNHDwCLcBGAs/s1600/14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="370" data-original-width="582" height="253" src="https://3.bp.blogspot.com/-yVw_sVngZ_w/XNjLLTdbXNI/AAAAAAAAVPA/ZtVlpcNXwK4qHg3DF28nDfVXSbKMGNHDwCLcBGAs/s400/14.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Vou dar agora meu segundo commit, informando a inserção de mais dois arquivos. Novamente utilizarei o comando git commit -m "Mensagem" :</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-Be4DrlBGQlU/XNjLlQ0rV-I/AAAAAAAAVPI/cvzFICPihXoig0qstF7BFXNdxXeLtxRagCLcBGAs/s1600/15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="370" data-original-width="582" height="253" src="https://3.bp.blogspot.com/-Be4DrlBGQlU/XNjLlQ0rV-I/AAAAAAAAVPI/cvzFICPihXoig0qstF7BFXNdxXeLtxRagCLcBGAs/s400/15.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-MDXFYT7b6Xo/XNjLxHz1ubI/AAAAAAAAVPM/J93BXGLntos29vVoRrDyXCYD4Jk1ehEmwCLcBGAs/s1600/16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="370" data-original-width="582" height="253" src="https://1.bp.blogspot.com/-MDXFYT7b6Xo/XNjLxHz1ubI/AAAAAAAAVPM/J93BXGLntos29vVoRrDyXCYD4Jk1ehEmwCLcBGAs/s400/16.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="text-align: start;"><span style="font-size: large;">Criar um repositório no GitHub</span></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Agora vamos lá no GitHub criar um repositório para inserir esse projeto. Acesse o site do GitHub e com o login efetuado, clique em 'New' para criar um novo repositório:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-eCJMlZWY-90/XNjMjB-883I/AAAAAAAAVPY/Q0od6gL_140YvmSdRPiyqZiA0hxbBGN7QCLcBGAs/s1600/17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="650" data-original-width="1329" height="195" src="https://4.bp.blogspot.com/-eCJMlZWY-90/XNjMjB-883I/AAAAAAAAVPY/Q0od6gL_140YvmSdRPiyqZiA0hxbBGN7QCLcBGAs/s400/17.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Insira um nome para o repositório. A descrição é opcional. Escolha se ele será público ou privado e clique em 'Create Repository':</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-fkhezRc0Qow/XNjNZ17n3pI/AAAAAAAAVPg/4GYU29z3SjAmK6821jV8WocFTa167z1_gCLcBGAs/s1600/19.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="728" data-original-width="1052" height="276" src="https://2.bp.blogspot.com/-fkhezRc0Qow/XNjNZ17n3pI/AAAAAAAAVPg/4GYU29z3SjAmK6821jV8WocFTa167z1_gCLcBGAs/s400/19.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="text-align: start;"><span style="font-size: large;">Enviar os arquivos de uma pasta com o Git para o nosso repositório no GitHub</span></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Após clicar em 'Create Repository' você será redirecionado para a seguinte página:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-6WXjMqH4-O4/XNjObAXhZRI/AAAAAAAAVPw/lh7glaXqqM4JB3Ug0_ZJVg9VqXlTOyvgACLcBGAs/s1600/20.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="595" data-original-width="1328" height="143" src="https://4.bp.blogspot.com/-6WXjMqH4-O4/XNjObAXhZRI/AAAAAAAAVPw/lh7glaXqqM4JB3Ug0_ZJVg9VqXlTOyvgACLcBGAs/s320/20.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Destaquei de vermelho dois comandos ensinados nessa página:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
O <b>git remote add origin https://github.com/keniaferreira/TesteGit.git</b></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Esse comando adiciona uma origin à sua pasta local e informa que ela vai se conectar com seu repositório remoto no Git. Vamos executá-lo em nosso terminal:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-Bb9RpnPCFJk/XNjPXlC5H-I/AAAAAAAAVP8/Te5MXiWr4oIqfkL5uVY2dHdiAlzytA1nACLcBGAs/s1600/21.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="370" data-original-width="581" height="253" src="https://4.bp.blogspot.com/-Bb9RpnPCFJk/XNjPXlC5H-I/AAAAAAAAVP8/Te5MXiWr4oIqfkL5uVY2dHdiAlzytA1nACLcBGAs/s400/21.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
E o comando <b>git push -u origin master</b> </div>
<div class="separator" style="clear: both; text-align: justify;">
Esse comando insere os arquivos e suas alterações ao repositório remoto:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-IE8Wlv0v4y8/XNjP5ISlBxI/AAAAAAAAVQI/TzZlYpC9LdAexiFjI403c5k5E9omV6zEACLcBGAs/s1600/22.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="370" data-original-width="581" height="253" src="https://4.bp.blogspot.com/-IE8Wlv0v4y8/XNjP5ISlBxI/AAAAAAAAVQI/TzZlYpC9LdAexiFjI403c5k5E9omV6zEACLcBGAs/s400/22.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Quando você executar esse último comando, como você está iniciando vai abrir essa janela pra você fazer login no GitHub:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-gOERjuzYuy0/XNjQeFevmJI/AAAAAAAAVQQ/jNxoQJJgPKUTMfrTA0F_dq42hVHRwF6MgCLcBGAs/s1600/23.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="413" data-original-width="407" height="320" src="https://1.bp.blogspot.com/-gOERjuzYuy0/XNjQeFevmJI/AAAAAAAAVQQ/jNxoQJJgPKUTMfrTA0F_dq42hVHRwF6MgCLcBGAs/s320/23.png" width="315" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Assim que você fizer o login, seus arquivos e alterações serão enviadas para seu repositório remoto:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-cmyET--j1B0/XNjQ-mngNgI/AAAAAAAAVQY/6ybNpHkne6g3jJcZj_u_kAkDm4QZm2BeACLcBGAs/s1600/24.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="371" data-original-width="581" height="255" src="https://2.bp.blogspot.com/-cmyET--j1B0/XNjQ-mngNgI/AAAAAAAAVQY/6ybNpHkne6g3jJcZj_u_kAkDm4QZm2BeACLcBGAs/s400/24.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Pode verificar seu repositório lá no Git. Seus arquivos já estão lá:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-2UdGiPzJeOM/XNjRWVpUAQI/AAAAAAAAVQk/DbhlPuwe-dQwEjtY7sRcZyKS0YnzJRhiQCLcBGAs/s1600/25.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="625" data-original-width="1326" height="187" src="https://3.bp.blogspot.com/-2UdGiPzJeOM/XNjRWVpUAQI/AAAAAAAAVQk/DbhlPuwe-dQwEjtY7sRcZyKS0YnzJRhiQCLcBGAs/s400/25.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-size: large;">Resumo dos principais comandos:</span></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<b>git init</b> (Esse comando inicia o Git no seu repositório)</div>
<div class="separator" style="clear: both; text-align: justify;">
<b>git add . </b>(Comando para adicionar os arquivos do seu repositório ao controle de versão)</div>
<div class="separator" style="clear: both; text-align: justify;">
<b>git commit -m "first commit"</b> (Comando para dar um commit)</div>
<div class="separator" style="clear: both; text-align: justify;">
<b>git remote add origin git@github.com:SeuUsername/seuRepositorio.git</b> (Comando para conectar o seu repositório local ao seu repositório remoto)</div>
<div class="separator" style="clear: both; text-align: justify;">
<b>git push -u origin master</b> (Comando para enviar arquivos do seu repositório local para seu repositório remoto)</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Pra começar é isso. O próximo post será sobre como clonar os arquivos de um repositório remoto para uma pasta local. Abraços!</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com0tag:blogger.com,1999:blog-33852002.post-13315566224858353402019-06-14T18:16:00.000-03:002019-06-14T18:16:00.750-03:00Primeiros Passos com o Xampp no WindowsO Xampp é um pacote com os principais serviços necessários para a criação de um servidor web local. Com ele é possível rodar localmente sistemas Laravel, Wordpress, Drupal etc. Isso facilita bastante o desenvolvimento, uma vez que você pode desenvolver e testar suas aplicações em seu próprio PC antes de hospedá-las em um servidor.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-SThnetKocBY/XNinaecS5VI/AAAAAAAAVIA/gSuHQSOHwcIO0BVMkMKFRm2IovVBHsMtQCLcBGAs/s1600/xampp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Como instalar o Xampp" border="0" data-original-height="256" data-original-width="256" height="200" src="https://1.bp.blogspot.com/-SThnetKocBY/XNinaecS5VI/AAAAAAAAVIA/gSuHQSOHwcIO0BVMkMKFRm2IovVBHsMtQCLcBGAs/s200/xampp.png" width="200" /></a></div>
O Xampp é gratuito e vem com:<br />
<br />
<b>Apache</b> - Servidor web gratuito.<br />
<br />
<b>MySql</b> - Sistema gerenciador de banco de dados relacional de código aberto que usa linguagem SQL.<br />
Agora o serviço é <b>MariaDB</b>. O MariaDB surgiu como fork* do MySQL, criado pelo próprio fundador do projeto após sua aquisição pela Oracle.<br />
<div>
<br /></div>
<b>PHP</b> - Linguagem de programação interpretada livre.<br />
<br />
<b>Perl</b> - Perl é uma família de duas linguagens de programação multiplataforma, Perl 5 e Perl 6.<br />
<br />
<span style="font-size: large;">Instalando o Xampp</span><br />
<br />
Para instalar, acesse o site do <a href="https://www.apachefriends.org/pt_br/index.html" target="_blank">Xampp</a> e clique no link disponível para instalar a última versão:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-yCKuQP04qjs/XNiSZw6c7vI/AAAAAAAAVHA/rMgraRGmOEA4DlRoICE61jv2mclkBy6nQCLcBGAs/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="550" data-original-width="1366" height="160" src="https://1.bp.blogspot.com/-yCKuQP04qjs/XNiSZw6c7vI/AAAAAAAAVHA/rMgraRGmOEA4DlRoICE61jv2mclkBy6nQCLcBGAs/s400/1.png" width="400" /></a></div>
<br />
Execute o arquivo baixado e vá seguindo os passos para concluir a instalação:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-U5yn3WJnObM/XNijZaUqBXI/AAAAAAAAVHU/hVzDWoA0jbU9YzTZw_ZWf4xS4X3YGHAOwCLcBGAs/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="425" data-original-width="502" height="337" src="https://3.bp.blogspot.com/-U5yn3WJnObM/XNijZaUqBXI/AAAAAAAAVHU/hVzDWoA0jbU9YzTZw_ZWf4xS4X3YGHAOwCLcBGAs/s400/2.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-kihbg8Ra0Zk/XNijZeQAJTI/AAAAAAAAVHQ/BrNgRdbp7_cENucsDkiPd44KJM6XlMTlwCLcBGAs/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="425" data-original-width="502" height="337" src="https://4.bp.blogspot.com/-kihbg8Ra0Zk/XNijZeQAJTI/AAAAAAAAVHQ/BrNgRdbp7_cENucsDkiPd44KJM6XlMTlwCLcBGAs/s400/3.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-tYsoKjH973o/XNijZVb1mdI/AAAAAAAAVHM/4ivlW4M83vsG6g4R9eTtF69GMF1XEw3vACLcBGAs/s1600/4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="425" data-original-width="502" height="337" src="https://2.bp.blogspot.com/-tYsoKjH973o/XNijZVb1mdI/AAAAAAAAVHM/4ivlW4M83vsG6g4R9eTtF69GMF1XEw3vACLcBGAs/s400/4.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Vou deixar desabilitada a opção de instalar também o Bitnami*, mas, se você for utilizar, é só deixar marcada essa opção:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-3E3BqyI1IoM/XNikSQDrgeI/AAAAAAAAVHk/48usqJrXg8wV4Uz--Plso6WcBk3k9ylowCLcBGAs/s1600/5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="425" data-original-width="502" height="337" src="https://2.bp.blogspot.com/-3E3BqyI1IoM/XNikSQDrgeI/AAAAAAAAVHk/48usqJrXg8wV4Uz--Plso6WcBk3k9ylowCLcBGAs/s400/5.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Prossiga avançando para próxima opção e aguarde a instalação:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-t1a5F-W4B5A/XNikk9wwarI/AAAAAAAAVHs/in26lkg28lUlnk77XHBysSXRIP2EpslPwCLcBGAs/s1600/6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="425" data-original-width="502" height="337" src="https://4.bp.blogspot.com/-t1a5F-W4B5A/XNikk9wwarI/AAAAAAAAVHs/in26lkg28lUlnk77XHBysSXRIP2EpslPwCLcBGAs/s400/6.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-AvkYg6LyHsY/XNimffx3_4I/AAAAAAAAVH4/1Mng868NEQw0AZhGPzPtAlgkiChqSdIywCLcBGAs/s1600/7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="425" data-original-width="502" height="337" src="https://3.bp.blogspot.com/-AvkYg6LyHsY/XNimffx3_4I/AAAAAAAAVH4/1Mng868NEQw0AZhGPzPtAlgkiChqSdIywCLcBGAs/s400/7.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-2CgOqtHbP0k/XNiocJ9TcqI/AAAAAAAAVIM/m6RhRr4DKgsIBxrMUZMthpmUSulfYyMTQCLcBGAs/s1600/8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="425" data-original-width="502" height="337" src="https://4.bp.blogspot.com/-2CgOqtHbP0k/XNiocJ9TcqI/AAAAAAAAVIM/m6RhRr4DKgsIBxrMUZMthpmUSulfYyMTQCLcBGAs/s400/8.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Escolha agora o idioma de sua preferência e clique em "Save". Vou deixar o meu em inglês mesmo:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-vQOI8RAtYQc/XNiowAoML3I/AAAAAAAAVIU/7FO08eqrHRAPqCgyv1IA6uMvR-mfp2UrwCLcBGAs/s1600/9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="174" data-original-width="223" height="156" src="https://2.bp.blogspot.com/-vQOI8RAtYQc/XNiowAoML3I/AAAAAAAAVIU/7FO08eqrHRAPqCgyv1IA6uMvR-mfp2UrwCLcBGAs/s200/9.png" width="200" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
O painel de controle do aplicativo vai ser iniciado. Você precisa estartar pelo menos o Apache para começar a trabalhar com suas aplicações Web. Para utilizar banco de dados, dê um <i>start</i> também no MySql:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-0_3zIP60KR0/XNipY_LtxaI/AAAAAAAAVIc/-8DHoi_8rBgWfVN3nXBa4klGXFnTpPbQgCLcBGAs/s1600/10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="433" data-original-width="668" height="258" src="https://4.bp.blogspot.com/-0_3zIP60KR0/XNipY_LtxaI/AAAAAAAAVIc/-8DHoi_8rBgWfVN3nXBa4klGXFnTpPbQgCLcBGAs/s400/10.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-0rpSDwsXJlY/XNipssprXTI/AAAAAAAAVIk/mDXxLRFJdS0jYVByRmKrDtnPx4JFGzoywCLcBGAs/s1600/11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="434" data-original-width="668" height="258" src="https://4.bp.blogspot.com/-0rpSDwsXJlY/XNipssprXTI/AAAAAAAAVIk/mDXxLRFJdS0jYVByRmKrDtnPx4JFGzoywCLcBGAs/s400/11.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
Após iniciado o Apache, abra o seu navegador Web e digite o endereço: http://localhost<br />
<br />
A visualização dessa página, indica que está tudo certo:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-pycRZY_XHR0/XNiqg-nM0II/AAAAAAAAVIs/GraITqW2bN83QdyU7n-hMHCj2D52ik7LACLcBGAs/s1600/12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="728" data-original-width="1326" height="218" src="https://2.bp.blogspot.com/-pycRZY_XHR0/XNiqg-nM0II/AAAAAAAAVIs/GraITqW2bN83QdyU7n-hMHCj2D52ik7LACLcBGAs/s400/12.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
O PHPMyAdmin para o gerenciamento de bancos de dados, pode ser acessado através da url http://localhost/phpmyadmin</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-QCogqix79OI/XNiq7eakFgI/AAAAAAAAVI0/0aSpd3CG4uUWzERIej2DYe6mqFTTbH7LgCLcBGAs/s1600/13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="728" data-original-width="1326" height="218" src="https://2.bp.blogspot.com/-QCogqix79OI/XNiq7eakFgI/AAAAAAAAVI0/0aSpd3CG4uUWzERIej2DYe6mqFTTbH7LgCLcBGAs/s400/13.png" width="400" /></a></div>
<br />
<br />
Com a instalação do Xampp, foi criada a pasta xampp dentro de C:<br />
Caminho para acessar a pasta: C:\xampp<br />
Dentro da pasta xampp, você pode verificar várias pastas contendo vários arquivos do aplicativo e a pasta htdocs. Caminho para acessar a pasta: C:\xampp\htdocs<br />
<br />
Seus projetos serão salvos dentro da pasta htdocs. Para iniciar e testar, crie uma pasta qualquer dentro dessa pasta com o nome do seu projeto e salve um aquivo index.html nela.<br />
<br />
No meu caso, criei a pasta MeuProjeto dentro da pasta htdocs. e inseri um arquivo index.html com uma tag de título apenas para visualização.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-_gPqz2coEp0/XNitRDBZdWI/AAAAAAAAVJI/GMKhj3GJHwwaKbpNgk-Pxt-zGl6RfdtiwCLcBGAs/s1600/16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="675" data-original-width="906" height="297" src="https://3.bp.blogspot.com/-_gPqz2coEp0/XNitRDBZdWI/AAAAAAAAVJI/GMKhj3GJHwwaKbpNgk-Pxt-zGl6RfdtiwCLcBGAs/s400/16.png" width="400" /></a></div>
<br />
<br />
Esse projeto, será visualizado pela url: localhost/MeuProjeto<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-PpddwN5Lztg/XNis02z7FHI/AAAAAAAAVJA/DLRJ3oW8-50Zj759hZnvH2iV7VR1XRhHgCLcBGAs/s1600/15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="728" data-original-width="1324" height="218" src="https://2.bp.blogspot.com/-PpddwN5Lztg/XNis02z7FHI/AAAAAAAAVJA/DLRJ3oW8-50Zj759hZnvH2iV7VR1XRhHgCLcBGAs/s400/15.png" width="400" /></a></div>
<br />
Prontinho! Você já pode começar a criar seus projetos! Não se esqueça que todas as vezes que você for utilizar o Xampp, é preciso abrir o aplicativo e estartar os serviços conforme mostrado acima.<br />
<br />
<span style="font-size: x-small;">Fork - Em engenharia de software, uma bifurcação (em inglês: fork) ou ramificação acontece quando um desenvolvedor inicia um projeto independente com base no código de um projeto já existente, ou seja, quando um software é desenvolvido com base em outro, já existente, sem a descontinuidade deste último - Wikipédia</span><br />
<span style="font-size: x-small;"><span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;">Bitnami - É uma biblioteca de instaladores ou pacotes de software para aplicativos da Web e pilhas de desenvolvimento, bem como dispositivos virtuais. A Bitnami é patrocinada pela Bitrock, uma empresa fundada em 2003 em Sevilha, na Espanha, por Daniel Lopez Ridruejo e Erica Brescia - Wikipédia</span></span>Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com0tag:blogger.com,1999:blog-33852002.post-33523301105827641702019-06-07T02:02:00.000-03:002019-06-14T08:46:27.047-03:00Laravel - Habilitando as Páginas de Cadastro e Login Para o UsuárioApós <a href="http://www.keniaferreira.com/2019/05/laravel-resumo-sobre-instalacao-e.html" target="_blank">executar os primeiros passos e criar o seu projeto com o Laravel</a>, o framework disponibiliza uma página assim pra você:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-BPmOUA0mm9k/XNcjxRRo98I/AAAAAAAAVEQ/3BrJgQO1B1UXmRmfBveiIJ9q6J6kT8S2gCLcBGAs/s1600/6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="619" data-original-width="1315" height="187" src="https://1.bp.blogspot.com/-BPmOUA0mm9k/XNcjxRRo98I/AAAAAAAAVEQ/3BrJgQO1B1UXmRmfBveiIJ9q6J6kT8S2gCLcBGAs/s400/6.png" width="400" /></a></div>
<br />
Agora você precisa começar a construir o seu projeto pra deixar ele funcional da maneira que você precisa. Uma das coisas que provavelmente você vai precisar, é criar todo o esquema de login para o usuário. O Laravel facilita muito esta etapa. Basta você seguir as orientações abaixo para ativar o login de usuário em poucos passos:<br />
<br />
1 - Primeiro, você precisa <a href="http://www.keniaferreira.com/2019/05/laravel-criando-o-banco-de-dados-e.html" target="_blank">criar o banco de dados da aplicação e realizar a conexão</a>.<br />
<br />
2 - No Windows PowerShell ou CMD ao navegar para a pasta do projeto, execute o comando: "php artisan make:auth".<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-gr3sUCVMwGc/XNckWazz04I/AAAAAAAAVEY/5A7--QOPdFA2vAQR5nDIIeHdecyJ2YAIgCLcBGAs/s1600/7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="445" data-original-width="860" height="206" src="https://4.bp.blogspot.com/-gr3sUCVMwGc/XNckWazz04I/AAAAAAAAVEY/5A7--QOPdFA2vAQR5nDIIeHdecyJ2YAIgCLcBGAs/s400/7.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
3 - Execute agora o comando "php artisan migrate" para que o sistema crie as tabelas de login que já estão presentes na pasta de migrations.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-5Y1Tu0D5fck/XNiJo4ClkJI/AAAAAAAAVGU/Se2kLwacWjYMbtFyDJKbaqaq6Pi8Xc6-QCEwYBhgL/s1600/18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="352" data-original-width="887" height="157" src="https://2.bp.blogspot.com/-5Y1Tu0D5fck/XNiJo4ClkJI/AAAAAAAAVGU/Se2kLwacWjYMbtFyDJKbaqaq6Pi8Xc6-QCEwYBhgL/s400/18.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-Y7O1HK94Vo8/XNiJowchgKI/AAAAAAAAVGY/skUpu_Bw_IsQAe5lO2uPL49MbUZuSwJkwCEwYBhgL/s1600/19.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="352" data-original-width="887" height="157" src="https://1.bp.blogspot.com/-Y7O1HK94Vo8/XNiJowchgKI/AAAAAAAAVGY/skUpu_Bw_IsQAe5lO2uPL49MbUZuSwJkwCEwYBhgL/s400/19.png" width="400" /></a></div>
<br />
4 - A parte de login e registro de usuários do seu sistema está pronta! Para visualizar, basta digitar o comando "php artisan serve" para gerar um servidor de testes e visualizar o seu projeto no navegador:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-Y4CysQUD_PI/XNiLJvCxWSI/AAAAAAAAVGo/YnTEoVtcCN01DcCjOcTO0lpt4MXOHWRxACLcBGAs/s1600/21.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="352" data-original-width="887" height="157" src="https://1.bp.blogspot.com/-Y4CysQUD_PI/XNiLJvCxWSI/AAAAAAAAVGo/YnTEoVtcCN01DcCjOcTO0lpt4MXOHWRxACLcBGAs/s400/21.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-KpHW4fIsqn0/XNiLJsdzgrI/AAAAAAAAVGs/rmp9OVLn_j8e82LcUHuhqQ4ilVaH2GdswCLcBGAs/s1600/22.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="352" data-original-width="887" height="157" src="https://4.bp.blogspot.com/-KpHW4fIsqn0/XNiLJsdzgrI/AAAAAAAAVGs/rmp9OVLn_j8e82LcUHuhqQ4ilVaH2GdswCLcBGAs/s400/22.png" width="400" /></a></div>
<br />
5 - Ao visualizar o projeto no navegador com o endereço do servidor de testes, você poderá verificar a criação dos links de login e registro:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-1jP1clyloEY/XNiMDqzHNiI/AAAAAAAAVG0/MAsuMgC0c1slAJJsBpoPwpf3mL7OV8jhACLcBGAs/s1600/23.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="643" data-original-width="1325" height="193" src="https://1.bp.blogspot.com/-1jP1clyloEY/XNiMDqzHNiI/AAAAAAAAVG0/MAsuMgC0c1slAJJsBpoPwpf3mL7OV8jhACLcBGAs/s400/23.png" width="400" /></a></div>
<br />
Se quiser alterar a página para a qual o usuário é redirecionado ao fazer login, acesse o arquivo LoginController.php no caminho \app\Http\Controllers\Auth e altere a linha:<br />
<br />
protected $redirectTo = '/home';<br />
<br />
Ex:<br />
<br />
protected $redirectTo = '/venda/venda'; //Redirecinei para minha página de vendas.<br />
<br />
Se você quiser abrir a página inicial do seu site já com a tela de login. Altere no arquivo web.php que fica na pasta \routes a linha:<br />
<br />
Route::get('/', function () {<br />
return view('welcome');<br />
});<br />
<br />
Para:<br />
<br />
Route::get('/', function () {<br />
return view('auth/login');<br />
});<br />
<br />
Insira nesse mesmo arquivo a seguinte linha com a rota:<br />
<br />
Route::auth();<br />
<br />
Caso o seu sistema não seja aberto para o registro dos usuários, é possível também retirar a página de cadastro do usuário. Ou seja, você quem fará o cadastro dos usuários que terão acesso.<br />
<br />
Para tal. É preciso acessar o arquivo RegisterController.php no caminho: \app\http\Controllers\Auth e inserir antes do seu fechamento a função:<br />
<br />
public function showRegistrationForm(){<br />
return redirect('login');<br />
}<br />
<br />
Link de Logout<br />
<br />
O link de logout é sempre inserido com o código: {{url('/logout')}}<br />
<br />
Exemplo:<br />
<br />
<a href="{{url('/logout')}}" class="btn btn-default btn-flat">Sair</a><br />
<br />
Para concluir a configuração do logout, é necessário acessar novamente o arquivo de rotas (web.php) no caminho: \routes e inserir uma linha com a rota de logout:<br />
<br />
Route::get('/logout', 'Auth\LoginController@logout');<br />
<div>
<br /></div>
Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com0tag:blogger.com,1999:blog-33852002.post-42570404912706920402019-05-31T00:38:00.000-03:002019-05-31T08:09:42.498-03:00Laravel - Criando o Banco de Dados e Fazendo a ConexãoO Laravel facilita muito a conexão com o banco de dados da aplicação. Você só precisa criar o banco através do seu phpMyAdmin, e inserir as informações do banco no arquivo .env presente na pasta raiz do projeto criado.<br />
<br />
Siga os seguintes passos para criar o banco e fazer a conexão:<br />
<br />
1 - Entrar no phpMyAdmin e criar o banco de dados. O Laravel utiliza por Default o padrão utf8mb4_unicode_ci<br />
<br />
Clique nas imagens para ampliar:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-xlzuYQzFWIU/XNYzGSpqseI/AAAAAAAAVDk/YpKUMBvn1_8ZopFXzM9BRTsTKbLaQwHQwCLcBGAs/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="728" data-original-width="1366" height="212" src="https://1.bp.blogspot.com/-xlzuYQzFWIU/XNYzGSpqseI/AAAAAAAAVDk/YpKUMBvn1_8ZopFXzM9BRTsTKbLaQwHQwCLcBGAs/s400/1.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-k73Sk5mSq8g/XNYzGa6YqnI/AAAAAAAAVDg/5lWxEGtgTEM4AUXJCxcDcwMeiRLHl8gFwCLcBGAs/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="728" data-original-width="1366" height="212" src="https://3.bp.blogspot.com/-k73Sk5mSq8g/XNYzGa6YqnI/AAAAAAAAVDg/5lWxEGtgTEM4AUXJCxcDcwMeiRLHl8gFwCLcBGAs/s400/2.png" width="400" /></a></div>
<br />
<br />
2 - Abrir o arquivo .env na pasta raiz do projeto:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-zv8DBCHpMkI/XNY2Suuye1I/AAAAAAAAVD4/plVYDfyEVW838YTi0e30zVltiFRC6MuAQCLcBGAs/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="674" data-original-width="654" height="320" src="https://4.bp.blogspot.com/-zv8DBCHpMkI/XNY2Suuye1I/AAAAAAAAVD4/plVYDfyEVW838YTi0e30zVltiFRC6MuAQCLcBGAs/s320/3.png" width="310" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-7LmgGfPrPB4/XNY2SoMgh4I/AAAAAAAAVD0/hJHgZ1s6NL43B6WaErovaRxp39FJgIhwgCLcBGAs/s1600/4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="674" data-original-width="654" height="320" src="https://3.bp.blogspot.com/-7LmgGfPrPB4/XNY2SoMgh4I/AAAAAAAAVD0/hJHgZ1s6NL43B6WaErovaRxp39FJgIhwgCLcBGAs/s320/4.png" width="310" /></a></div>
<br />
<br />
E editar as seguintes linhas inserindo:<br />
<br />
DB_DATABASE=banco_teste<br />
DB_USERNAME=root<br />
DB_PASSWORD=<br />
<br />
<br />
Teste se está tudo ok com a sua conexão criando algumas Migrations.<br />
<br />
Até a próxima!Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com0tag:blogger.com,1999:blog-33852002.post-71699984693569809552019-05-24T00:42:00.000-03:002019-05-24T00:42:03.827-03:00Laravel - Criando Models e Migrations<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-Q8y_Bd0aUbA/XMn65OEFuMI/AAAAAAAAU8w/qyDdR5AAviMsl6hn4yoZGzWIZWP_43QwgCLcBGAs/s1600/iconfinder_194_Laravel_4519141.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="128" data-original-width="128" src="https://2.bp.blogspot.com/-Q8y_Bd0aUbA/XMn65OEFuMI/AAAAAAAAU8w/qyDdR5AAviMsl6hn4yoZGzWIZWP_43QwgCLcBGAs/s1600/iconfinder_194_Laravel_4519141.png" /></a></div>
As <b>Models</b> são classes responsáveis pela administração dos dados. Elas são inseridas no diretório \app<br />
<br />
As <b>Migrations</b> foram criadas no Laravel para o uso do controle de versão e o compartilhamento das alterações de um BD entre os desenvolvedores de uma equipe. Com uma Migration, é possível construir ou modificar as tabelas do seu banco sem a necessidade de realizar isso manualmente no phpMyAdmin.<br />
<br />
Antes de criar as Migrations você precisa criar um banco de dados em branco no phpMyAdmin e inserir seus dados de acesso para conexão presentes no arquivo <b>.env</b> que se encontra na pasta raiz do seu projeto.<br />
<br />
Vamos ao que interessa:<br />
<br />
1 - Para criar uma Model, é necessário abrir o Windows PowerShell ou CMD e navegar até a pasta C: com o comando "cd \" e logo após, navegar até a pasta do seu projeto com o comando "cd \xampp\htdocs\nomeDoSeuProjeto" (estou supondo que você utiliza o Xampp). Após isso, basta executar o comando:<br />
<br />
"php artisan make:model NomeDaModel -m"<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-jjhcT3TwQO0/XNiCnWcFt2I/AAAAAAAAVFA/dCcs8CnWpoIlkVqiuM2CTLZzj41KqzMOwCLcBGAs/s1600/10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="352" data-original-width="860" height="162" src="https://3.bp.blogspot.com/-jjhcT3TwQO0/XNiCnWcFt2I/AAAAAAAAVFA/dCcs8CnWpoIlkVqiuM2CTLZzj41KqzMOwCLcBGAs/s400/10.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-gfCKpJ3uIvs/XNiCuPqBYFI/AAAAAAAAVFE/5_OHH8QEkt0Gku9w0AES94HpQg4XX5pSwCLcBGAs/s1600/11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="352" data-original-width="860" height="162" src="https://4.bp.blogspot.com/-gfCKpJ3uIvs/XNiCuPqBYFI/AAAAAAAAVFE/5_OHH8QEkt0Gku9w0AES94HpQg4XX5pSwCLcBGAs/s400/11.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
2 - Uma model então é criada dentro da pasta citada no passo 1. Além disso, é criado uma migration com o mesmo nome da model no caminho (\database\migrations).<br />
<br />
3 - Se você quiser criar somente a Model. Execute o comando: "php artisan make:model NomeDaModel"<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-MoYmkAKuKoU/XNiCT6Em5FI/AAAAAAAAVEw/0ZHKVX2bSBAld2P1-Uxtghyh8VzyoHhngCLcBGAs/s1600/8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="352" data-original-width="860" height="162" src="https://4.bp.blogspot.com/-MoYmkAKuKoU/XNiCT6Em5FI/AAAAAAAAVEw/0ZHKVX2bSBAld2P1-Uxtghyh8VzyoHhngCLcBGAs/s400/8.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-xIGwLiQ1GSU/XNiCT-aFqcI/AAAAAAAAVE0/AqGVC73FVVsRPKtaRFiWnLkO063gH38ZACLcBGAs/s1600/9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="352" data-original-width="860" height="162" src="https://3.bp.blogspot.com/-xIGwLiQ1GSU/XNiCT-aFqcI/AAAAAAAAVE0/AqGVC73FVVsRPKtaRFiWnLkO063gH38ZACLcBGAs/s400/9.png" width="400" /></a></div>
<br />
<br />
4 - Se você quiser criar somente a Migration. Execute o comando: "php artisan make:migration NomeDaMigracao"<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-eSn8d-uKSBE/XNiEXjP46PI/AAAAAAAAVFY/7dGxV0E38K8SOCsCH8slAc3875lGdr6DACLcBGAs/s1600/12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="352" data-original-width="860" height="162" src="https://4.bp.blogspot.com/-eSn8d-uKSBE/XNiEXjP46PI/AAAAAAAAVFY/7dGxV0E38K8SOCsCH8slAc3875lGdr6DACLcBGAs/s400/12.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-xBJVoH3VG7I/XNiEXpkBaCI/AAAAAAAAVFU/a9vUBPgDcU4iVGlgCWDNrwARIdfikQJYgCLcBGAs/s1600/13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="352" data-original-width="860" height="162" src="https://3.bp.blogspot.com/-xBJVoH3VG7I/XNiEXpkBaCI/AAAAAAAAVFU/a9vUBPgDcU4iVGlgCWDNrwARIdfikQJYgCLcBGAs/s400/13.png" width="400" /></a></div>
<br />
<br />
5 - O comando "php artisan make:migration create_table_products --create=products" cria, por exemplo, uma migration da tabela products já com os métodos up e down.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-HFaGemxeQVM/XNiEsJLhBLI/AAAAAAAAVFk/oL1nfmBtpE0MMzcr18gFg4OSRkC2igl-QCLcBGAs/s1600/14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="352" data-original-width="860" height="162" src="https://1.bp.blogspot.com/-HFaGemxeQVM/XNiEsJLhBLI/AAAAAAAAVFk/oL1nfmBtpE0MMzcr18gFg4OSRkC2igl-QCLcBGAs/s400/14.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-TaPf3ceqgVY/XNiEsDJMXeI/AAAAAAAAVFg/d-OOuxrk1ZIFDtUQCzxOIyOF-jlu3UdkQCLcBGAs/s1600/15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="352" data-original-width="860" height="162" src="https://2.bp.blogspot.com/-TaPf3ceqgVY/XNiEsDJMXeI/AAAAAAAAVFg/d-OOuxrk1ZIFDtUQCzxOIyOF-jlu3UdkQCLcBGAs/s400/15.png" width="400" /></a></div>
<br />
<br />
Método UP - Responsável pela implementação das atualizações do banco, criar uma tabela, atualizar uma coluna, etc.<br />
<br />
Método Down - O inverso da função UP. Reverte o banco de dados ao estado anterior a esta atualização.<br />
<br />
6 - Após criar suas migrations com os dados de interesse e fazer sua conexão como banco, utilize o comando "php artisan migrate" no terminal para construir as tabelas.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-4QCFejmz-yI/XNiG_eodF8I/AAAAAAAAVF4/xCnRBCd-rGAhs5VxDAZXJeYJpGUsSmzEACLcBGAs/s1600/18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="352" data-original-width="887" height="157" src="https://1.bp.blogspot.com/-4QCFejmz-yI/XNiG_eodF8I/AAAAAAAAVF4/xCnRBCd-rGAhs5VxDAZXJeYJpGUsSmzEACLcBGAs/s400/18.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-uwXSvhIWW8Q/XNiHq5cunII/AAAAAAAAVGA/HCp3jtzGq2IHmacyt_F9Pcu-cBz2whAcACLcBGAs/s1600/19.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="352" data-original-width="887" height="157" src="https://1.bp.blogspot.com/-uwXSvhIWW8Q/XNiHq5cunII/AAAAAAAAVGA/HCp3jtzGq2IHmacyt_F9Pcu-cBz2whAcACLcBGAs/s400/19.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
7 - Caso durante a criação das tabelas apareça o seguinte erro: "SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes"<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-yCGW2ZowwCA/XNiICWmHhUI/AAAAAAAAVGI/4ferA-96vVwNYsaBe9rlWoZZmtCNsDisgCLcBGAs/s1600/17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="352" data-original-width="887" height="157" src="https://2.bp.blogspot.com/-yCGW2ZowwCA/XNiICWmHhUI/AAAAAAAAVGI/4ferA-96vVwNYsaBe9rlWoZZmtCNsDisgCLcBGAs/s400/17.png" width="400" /></a></div>
<br />
<br />
Será preciso acessar o arquivo: AppServiceProvider no caminho App/Providers:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-NFosZjK-jNY/XNY3e35IN1I/AAAAAAAAVEE/uNlKsiLov5cHaUC_kDawV4IEVCfNYUPRACLcBGAs/s1600/5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="674" data-original-width="905" height="238" src="https://4.bp.blogspot.com/-NFosZjK-jNY/XNY3e35IN1I/AAAAAAAAVEE/uNlKsiLov5cHaUC_kDawV4IEVCfNYUPRACLcBGAs/s320/5.png" width="320" /></a></div>
<br />
<br />
E inserir a seguinte linha dentro do método boot:<br />
<br />
\Illuminate\Support\Facades\Schema::defaultStringLength(191);<br />
<br />
Vai ficar assim:<br />
<br />
public function boot()<br />
{<br />
\Illuminate\Support\Facades\Schema::defaultStringLength(191);<br />
}<br />
<br />
Logo depois, é necessário apagar todas as tabelas da base de dados e executar novamente o comando "php artisan migrate" de acordo com o passo 3 para construir novamente as tabelas.<br />
<br />
Por hoje é só. Até a próxima!<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />Kênia Ferreirahttp://www.blogger.com/profile/09752138737040979856noreply@blogger.com2