SlideShare uma empresa Scribd logo
1 de 50
Thyago Maia Tavares de Farias
E se minha aplicação tiver mil rotas????
 Você não precisa criar todas as rotas no arquivo route.php!
 Podemos mapear um controller no arquivo de rotas e, a partir
dele, aplicar as rotas;
 Para isso:
 O nome do método no controller deve começar com um dos
verbos HTTP como getIsso, postAquilo, etc.;
 Para cada parâmetro passado na rota, devemos criar o
parâmetro correspondente no método controller;
 O melhor? O Laravel cria o controller para você automaticamente!!!
 Para isso, vá no seu terminal, acesse a partir dele a pasta
C:xampphtdocslaravel e digite o comando:
php artisan make:controller Rotas
 Um novo controller com o nome Rotas será criado em
app/Http/Controllers;
 Agora, só precisaremos de uma linha no arquivo de rotas:
Route::controller(‘rotas’, ’Rotas’);
 Abra o navegador, acesse http://laravel.app/rotas. Como ainda não
existe nenhum método de rota, será gerada uma exceção;
 Vamos atualizar nosso controller para que tenha um método padrão,
a ser executado quando nenhuma rota for especificada;
 No controller Rotas, adicione o seguinte método:
public function getIndex() {
return 'Olá, sou a rota padrão do controller!';
}
 Abra o navegador, acesse http://laravel.app/rotas
 Também podemos criar o nome que desejarmos para nossas rotas. Exemplo: Logo
abaixo do método getIndex, crie o método:
public function getRequisicao() {
return 'Olá, sou executado a partir de um GET';
}
 No arquivo de rotas, adicione a seguinte rota:
Route::get('/teste', ['uses' => ‘Rotas@getRequisicao']);
 Abra o navegador, acesse http://laravel.app/teste
Classes Laravel utilizadas para filtrar os dados de
entrada dos nossos sistemas;
Funciona como um filtro de requisição, que executa
ações antes ou depois de uma requisição HTTP;
 Exemplo: Podemos inserir um token CSRF em formulários implementados
em Views para que apenas nossos forms realizem requisições. Precisamos
religar esse recurso, retirando o comentário da linha de código que
implementa esse recurso no arquivo app/Http/Kernel.php;
 Exemplo: Agora, vamos criar nossa primeira View! Vá para a pasta resources/views e crie o
arquivo contato.blade.php. Edite-o com o seguinte código HTML:
<html>
<body>
<form method=“post” action=“enviar-contato”>
{{ csrf_field() }}
<p>Nome: <input type=“text” name=“nome”></p>
<p>Telefone: <input type=“text” name=“telefone”></p>
<p><input type=“submit” value=“enviar”></p>
</form>
</body>
</html>
 Exemplo: Agora, vamos criar nossa primeira View! Vá para a pasta resources/views e crie o
arquivo contato.blade.php. Edite-o com o seguinte código HTML:
<html>
<body>
<form method=“post” action=“enviar-contato”>
{{ csrf_field() }}
<p>Nome: <input type=“text” name=“nome”></p>
<p>Telefone: <input type=“text” name=“telefone”></p>
<p><input type=“submit” value=“enviar”></p>
</form>
</body>
</html>
Olha o middleware aqui gente!!!
Exemplo: Agora, vamos criar uma rota para chamar nosso
formulário de contato no arquivo de rotas:
Route::get('/contato', ['uses' =>
‘ContatoController@contato']);
Route::post('/enviar-contato', ['uses' =>
‘ContatoController@enviarContato']);
 Em seguida, criaremos o controller responsável por exibir e receber
dados do formulário;
 Para isso, vá no seu terminal, acesse a partir dele a pasta
C:xampphtdocslaravel e digite o comando:
php artisan make:controller ContatoController
 Um novo controller com o nome ContatoController será criado em
app/Http/Controllers;
 Precisaremos criar os métodos contato() e enviarContato(Request
$request) no controller em questão:
public function contato() {
return view(‘contato’);
}
public function enviarContato(Request $request) {
dd($request->all());
}
 Abra o navegador, acesse http://laravel.dev/contato
Até o momento, criamos uma controladora que
responde a requisições HTTP do tipo GET e POST;
Mas... E quando eu precisar responder outros tipos
de requisição, como PUT ou DELETE?;
 Exemplo: Vá no seu terminal, acesse a partir dele a pasta
C:xampphtdocslaravel e digite o comando:
php artisan make:controller BasicoController
 Um novo controller com o nome BasicoController será criado em
app/Http/Controllers;
 No controller BasicoController, adicione o seguinte método:
public function putBasico() {
return View(‘put’);
}
public function put (Request $request) {
echo("Nome digitado: " . $request->input('nome'));
}
Em seguida, vamos atualizar nosso arquivo de rotas:
Route::get('/put', ['uses' =>
‘BasicoController@putBasico']);
Route::put('/put', ['uses' =>
‘BasicoController@put']);
 Agora, começaremos a manipular a camada de visualização de
dados. Crie a view put.blade.php na pasta resource/views:
<html>
<body>
<form method="post" action=“/put">
{{ csrf_field() }}
<input type=“hidden” name=“_method” value=“PUT”>
<p>Nome: <input required type="text" name="nome"></p>
</form>
</body>
</html>
Abra o navegador e acesse http://laravel.dev/contato
 Uma outra forma de alterar o tipo de requisição em um form
HTML:
<html>
<body>
<form method="post" action=“/put">
{{ csrf_field() }}
{{ method_field(‘PUT’) }}
<p>Nome: <input required type="text" name="nome"></p>
</form>
</body>
</html>
Controllers também podem ser concebidas com o objetivo
de abstrair funcionalidades CRUD (Criação, Leitura,
Atualização e Exclusão);
O Laravel pode não só criar tais tipos de classe
automaticamente, como também as assinaturas de método
necessárias e associar um tipo de requisição para cada
método;
 Exemplo: Vá no seu terminal, acesse a partir dele a pasta
C:xampphtdocslaravel e digite o comando:
php artisan make:controller LivroController
 Um novo controller com o nome LivroController será criado em
app/Http/Controllers;
 OBS.: Os alunos com o Homestead deverão digitar --resource
no final do comando!
 Verifique que o Laravel já criou as assinaturas de método de CRUD
automaticamente:
 index()
 create()
 store(Request $request)
 show($id)
 edit($id)
 update(Request $request, $id)
 destroy($id)
 Outro poder de controladoras de recurso é a simplificação do registro
de rotas. Continuando nosso exemplo, acesse o arquivo de rotas e
registre a seguinte rota:
Route::resource(‘livro', ‘LivroController’);
 Com esse registro de rota, o Laravel automaticamente atribui as
seguintes requisições HTTP e as rotas para cada método da
controladora de recurso:
Tipo URI Ação
GET /livro index
GET /livro/create create
POST /livro store
GET /livro/{pagina} show
GET /livro/{pagina}/edit edit
PUT/PATCH /livro/{pagina} update
DELETE /livro/{pagina} destroy
 Continuando o exemplo, no controller LivroController, edite os
seguintes métodos:
public function index() {
return ‘Olá, usuário!’;
}
public function create () {
return ‘Aqui acessarei views para a inserção de dados!’;
}
 As Views são classe do Modelo MVC responsáveis pela exibição
de dados para o usuário após um determinado processamento;
 O Blade é o motor de renderização que o Laravel adota
(notaram o .blade inserido no nome dos arquivos de view?);
 O Blade permite uma sintaxe mais enxuta na criação de
layouts, além de disponibilizar comandos para a geração de
conteúdo dinâmico (geralmente começam por @);
 Exemplo: O Blade permite ao programador definir seções de página de forma muito
simples. Crie na pasta /resource/views a view layout.blade.php:
<html>
<body>
@section(‘sidebar’)
Este é o sidebar da página
@show
<div>Olá, @yield(‘content’)!</div>
</body>
</html>
 Continuando nosso exemplo, acesse o arquivo de rotas e registre a
seguinte rota:
Route::get('/layout', function() {
return view('layout');
});
 Abra o navegador e acesse http://laravel.dev/layout
 Exemplo: O Blade permite ao programador reutilizar outras views na criação de
novas views. Crie na pasta /resource/views a view pagina1.blade.php:
@extends(‘layout’)
 Continuando nosso exemplo, acesse o arquivo de rotas, adicione a
seguinte rota e acesse http://laravel.dev/pagina1 :
Route::get('/pagina1', function() {
return view(‘pagina1');
});
 Exemplo: O Blade permite ao programador sobrescrever dados de
Views. Crie na pasta /resource/views a view pagina2.blade.php:
@extends(‘layout’)
@section(‘sidebar’)
Esse é o novo sidebar da página 2!!!!
@endsection
Continuando nosso exemplo, acesse o arquivo de rotas,
adicione a seguinte rota e acesse http://laravel.dev/pagina2
:
Route::get('/pagina2', function() {
return view(‘pagina2');
});
 Exemplo: O Blade permite ao programador inserir dados em Views.
Atualize a view pagina2.blade.php e acesse http://laravel.dev/pagina2 :
@extends(‘layout’)
@section(‘sidebar’)
Esse é o novo sidebar da página 2!!!!
@endsection
@section(‘content’)
Leão da Ilha do Retiro
@endsection
Recursos dinâmicos fornecidos pelo Blade
É possível utilizar PHP puro nas views para geração
de conteúdo dinâmico. Mas isso é uma boa prática???
O ideal é só inserir scripts PHP nos controllers e models!
O Blade fornece uma sintaxe e instruções que tornam
a codificação de Views mais enxuta e organizada;
Exemplo: Acesse o arquivo de rotas e registre a
seguinte rota:
Route::get('/exibir-dados', function() {
return view(‘exibindo_dados');
});
Crie na pasta /resource/views a view
exibindo_dados.blade.php e acesse
http://laravel.dev/exibir-dados :
<h1>{{ $titulo or ‘Título não encontrado’ }}</h1>
<p>{{ $texto or ‘Texto não encontrado’ }}</p>
If/else muito enxuto!
 Exemplo: Agora, acesse o arquivo de rotas , atualize a rota
exibir-dados e acesse http://laravel.dev/exibir-dados :
Route::get('/exibir-dados', function() {
return view(‘exibindo_dados‘, [
‘titulo’ => ‘Meu Blog’,
‘texto’ => ‘Sejam bem vindos!’,
]);
});
O Blade também permite escapar dados de
maneira simples;
Escapar dados é muito importante por questões de
segurança. Assim, evitamos que o usuário envie
dados maliciosos a partir de técnicas como SQL
injection e XSS;
Exemplo: Acesse o arquivo de rotas e registre a
seguinte rota:
Route::get('/nao-esc', function() {
return view(‘exibindo‘, [
‘conteudo’ => ‘<h1>Sport</h1>’
]);
});
Crie na pasta /resource/views a view exibindo.blade.php e
acesse http://laravel.dev/nao-esc :
{{ $conteudo }}
Sem escape, as tags HTML que foram enviadas como
parâmetros de view foram enviadas para a aplicação (eu
poderia ter enviado um Javascript malicioso, concorda?);
Agora edite a view exibindo.blade.php e acesse
http://laravel.dev/nao-esc :
{!! $conteudo !!}
Com escape, as tags HTML que foram enviadas como
parâmetros de view foram “escapadas”;
O Blade também permite inserir estruturas de
controle e repetição em views;
Tais estruturas auxiliam na geração de conteúdo
dinâmico a partir de uma sintaxe bastante enxuta;
Exemplo: Acesse o arquivo de rotas e registre a
seguinte rota:
Route::get('/se', function() {
return view(‘vazio‘, [
‘lista’ => []
]);
});
Agora edite a view vazio.blade.php e acesse
http://laravel.dev/se :
@if(count($lista) == 0)
<p>Não existe dados na lista</p>
@else
<p>Existem dados na lista</p>
@endif

Mais conteúdo relacionado

Mais procurados

Criando e consumindo Web Services (REST) com o CakePHP
Criando e consumindo Web Services (REST) com o CakePHPCriando e consumindo Web Services (REST) com o CakePHP
Criando e consumindo Web Services (REST) com o CakePHP2km interativa!
 
Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3Thyago Maia
 
Novas Funcionalidade no PHP 5.3
Novas Funcionalidade no PHP 5.3Novas Funcionalidade no PHP 5.3
Novas Funcionalidade no PHP 5.3Douglas V. Pasqua
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1Sliedesharessbarbosa
 
Programação Orientada a Objetos (POO) com PHP - Parte 1
Programação Orientada a Objetos (POO) com PHP - Parte 1Programação Orientada a Objetos (POO) com PHP - Parte 1
Programação Orientada a Objetos (POO) com PHP - Parte 1Israel Messias
 
RubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoRubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoCezinha Anjos
 
Introdução ao Ruby On Rails
Introdução ao Ruby On RailsIntrodução ao Ruby On Rails
Introdução ao Ruby On RailsMilton Moura
 
Python e Django
Python e DjangoPython e Django
Python e Djangopugpe
 
Como criar um plugin para WordPress
Como criar um plugin para WordPressComo criar um plugin para WordPress
Como criar um plugin para WordPressLeandrinho Vieira
 
Servidor de Aplicação Web: CherryPy - Python
Servidor de Aplicação  Web: CherryPy - PythonServidor de Aplicação  Web: CherryPy - Python
Servidor de Aplicação Web: CherryPy - Pythonantonio sérgio nogueira
 
Java Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsJava Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsEduardo Mendes
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Eduardo Mendes
 
Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2Eduardo Mendes
 
Workshop Ruby on Rails dia 2 ruby-pt
Workshop Ruby on Rails dia 2  ruby-ptWorkshop Ruby on Rails dia 2  ruby-pt
Workshop Ruby on Rails dia 2 ruby-ptPedro Sousa
 
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...PGDay Campinas
 

Mais procurados (19)

Criando e consumindo Web Services (REST) com o CakePHP
Criando e consumindo Web Services (REST) com o CakePHPCriando e consumindo Web Services (REST) com o CakePHP
Criando e consumindo Web Services (REST) com o CakePHP
 
Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3
 
Novas Funcionalidade no PHP 5.3
Novas Funcionalidade no PHP 5.3Novas Funcionalidade no PHP 5.3
Novas Funcionalidade no PHP 5.3
 
Introdução Ruby 1.8.7 + Rails 3
Introdução Ruby 1.8.7 + Rails 3Introdução Ruby 1.8.7 + Rails 3
Introdução Ruby 1.8.7 + Rails 3
 
Django Módulo Básico Parte II
Django Módulo Básico Parte IIDjango Módulo Básico Parte II
Django Módulo Básico Parte II
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1
 
Programação Orientada a Objetos (POO) com PHP - Parte 1
Programação Orientada a Objetos (POO) com PHP - Parte 1Programação Orientada a Objetos (POO) com PHP - Parte 1
Programação Orientada a Objetos (POO) com PHP - Parte 1
 
RubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoRubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direito
 
Introdução ao Ruby On Rails
Introdução ao Ruby On RailsIntrodução ao Ruby On Rails
Introdução ao Ruby On Rails
 
Python cherrypy
Python cherrypyPython cherrypy
Python cherrypy
 
Python e Django
Python e DjangoPython e Django
Python e Django
 
Como criar um plugin para WordPress
Como criar um plugin para WordPressComo criar um plugin para WordPress
Como criar um plugin para WordPress
 
Servidor de Aplicação Web: CherryPy - Python
Servidor de Aplicação  Web: CherryPy - PythonServidor de Aplicação  Web: CherryPy - Python
Servidor de Aplicação Web: CherryPy - Python
 
JSPs Introdução Parte 1
JSPs Introdução Parte 1JSPs Introdução Parte 1
JSPs Introdução Parte 1
 
Java Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsJava Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e Taglibs
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2
 
Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2
 
Workshop Ruby on Rails dia 2 ruby-pt
Workshop Ruby on Rails dia 2  ruby-ptWorkshop Ruby on Rails dia 2  ruby-pt
Workshop Ruby on Rails dia 2 ruby-pt
 
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
 

Semelhante a Rotas no Laravel com Controllers

ASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre TarifaASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre Tarifaguestea329c
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationMario Sergio
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIComunidade NetPonto
 
Construindo APIs RESTful com Spring
Construindo APIs RESTful com SpringConstruindo APIs RESTful com Spring
Construindo APIs RESTful com SpringMateus Malaquias
 
Mini curso de django
Mini curso de djangoMini curso de django
Mini curso de djangorosenclever
 
Programação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com DojoProgramação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com Dojofabioginzel
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsEduardo Mendes
 
Usando o i report como gerador de relatórios para php
Usando o i report como gerador de relatórios para phpUsando o i report como gerador de relatórios para php
Usando o i report como gerador de relatórios para phpbrunocf007
 
Apresentação Java Web Si Ufc Quixadá - MVC
Apresentação Java Web Si Ufc Quixadá - MVCApresentação Java Web Si Ufc Quixadá - MVC
Apresentação Java Web Si Ufc Quixadá - MVCZarathon Maia
 
Slide 01 introdução ao php e ao code igniter
Slide 01   introdução ao php e ao code igniterSlide 01   introdução ao php e ao code igniter
Slide 01 introdução ao php e ao code igniterRaniere de Lima
 
ZF Básico - 3. Quick Start
ZF Básico - 3. Quick StartZF Básico - 3. Quick Start
ZF Básico - 3. Quick StartMarcos Bezerra
 
Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01Maurício Linhares
 

Semelhante a Rotas no Laravel com Controllers (20)

Php 05 Mvc
Php 05 MvcPhp 05 Mvc
Php 05 Mvc
 
ApresentaçãO Mvc
ApresentaçãO MvcApresentaçãO Mvc
ApresentaçãO Mvc
 
Apresentação M V C
Apresentação M V CApresentação M V C
Apresentação M V C
 
servlet-requisicoes
servlet-requisicoesservlet-requisicoes
servlet-requisicoes
 
ASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre TarifaASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre Tarifa
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Curso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web ApplicationCurso de Java (Parte 7) Web Application
Curso de Java (Parte 7) Web Application
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
 
Construindo APIs RESTful com Spring
Construindo APIs RESTful com SpringConstruindo APIs RESTful com Spring
Construindo APIs RESTful com Spring
 
Mini curso de django
Mini curso de djangoMini curso de django
Mini curso de django
 
Programação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com DojoProgramação Web com Zend Framework e Ajax com Dojo
Programação Web com Zend Framework e Ajax com Dojo
 
Java13
Java13Java13
Java13
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
 
Usando o i report como gerador de relatórios para php
Usando o i report como gerador de relatórios para phpUsando o i report como gerador de relatórios para php
Usando o i report como gerador de relatórios para php
 
Crud
CrudCrud
Crud
 
Angular js
Angular jsAngular js
Angular js
 
Apresentação Java Web Si Ufc Quixadá - MVC
Apresentação Java Web Si Ufc Quixadá - MVCApresentação Java Web Si Ufc Quixadá - MVC
Apresentação Java Web Si Ufc Quixadá - MVC
 
Slide 01 introdução ao php e ao code igniter
Slide 01   introdução ao php e ao code igniterSlide 01   introdução ao php e ao code igniter
Slide 01 introdução ao php e ao code igniter
 
ZF Básico - 3. Quick Start
ZF Básico - 3. Quick StartZF Básico - 3. Quick Start
ZF Básico - 3. Quick Start
 
Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01
 

Mais de Thyago Maia

Metodologia e Linguagem de Programação - Aula 1
Metodologia e Linguagem de Programação - Aula 1Metodologia e Linguagem de Programação - Aula 1
Metodologia e Linguagem de Programação - Aula 1Thyago Maia
 
Programação Dinâmica para Web - Aula 1
Programação Dinâmica para Web - Aula 1Programação Dinâmica para Web - Aula 1
Programação Dinâmica para Web - Aula 1Thyago Maia
 
Metodologia e Linguagem de Programação Avançada - Aula 1
Metodologia e Linguagem de Programação Avançada - Aula 1Metodologia e Linguagem de Programação Avançada - Aula 1
Metodologia e Linguagem de Programação Avançada - Aula 1Thyago Maia
 
Desenvolvimento Web com PHP - Aula 2
Desenvolvimento Web com PHP - Aula 2Desenvolvimento Web com PHP - Aula 2
Desenvolvimento Web com PHP - Aula 2Thyago Maia
 
Desenvolvimento Web com PHP - Aula 1
Desenvolvimento Web com PHP - Aula 1Desenvolvimento Web com PHP - Aula 1
Desenvolvimento Web com PHP - Aula 1Thyago Maia
 
Fundamentos da Programação PHP OO - Aula 3
Fundamentos da Programação PHP OO - Aula 3Fundamentos da Programação PHP OO - Aula 3
Fundamentos da Programação PHP OO - Aula 3Thyago Maia
 
Fundamentos da Programação PHP OO - Aula 2
Fundamentos da Programação PHP OO - Aula 2Fundamentos da Programação PHP OO - Aula 2
Fundamentos da Programação PHP OO - Aula 2Thyago Maia
 
Fundamentos da Programação PHP OO - Aula 1
Fundamentos da Programação PHP OO - Aula 1Fundamentos da Programação PHP OO - Aula 1
Fundamentos da Programação PHP OO - Aula 1Thyago Maia
 
Mantenha sua Privacidade e Segurança na Web com o Tails
Mantenha sua Privacidade e Segurança na Web com o TailsMantenha sua Privacidade e Segurança na Web com o Tails
Mantenha sua Privacidade e Segurança na Web com o TailsThyago Maia
 

Mais de Thyago Maia (9)

Metodologia e Linguagem de Programação - Aula 1
Metodologia e Linguagem de Programação - Aula 1Metodologia e Linguagem de Programação - Aula 1
Metodologia e Linguagem de Programação - Aula 1
 
Programação Dinâmica para Web - Aula 1
Programação Dinâmica para Web - Aula 1Programação Dinâmica para Web - Aula 1
Programação Dinâmica para Web - Aula 1
 
Metodologia e Linguagem de Programação Avançada - Aula 1
Metodologia e Linguagem de Programação Avançada - Aula 1Metodologia e Linguagem de Programação Avançada - Aula 1
Metodologia e Linguagem de Programação Avançada - Aula 1
 
Desenvolvimento Web com PHP - Aula 2
Desenvolvimento Web com PHP - Aula 2Desenvolvimento Web com PHP - Aula 2
Desenvolvimento Web com PHP - Aula 2
 
Desenvolvimento Web com PHP - Aula 1
Desenvolvimento Web com PHP - Aula 1Desenvolvimento Web com PHP - Aula 1
Desenvolvimento Web com PHP - Aula 1
 
Fundamentos da Programação PHP OO - Aula 3
Fundamentos da Programação PHP OO - Aula 3Fundamentos da Programação PHP OO - Aula 3
Fundamentos da Programação PHP OO - Aula 3
 
Fundamentos da Programação PHP OO - Aula 2
Fundamentos da Programação PHP OO - Aula 2Fundamentos da Programação PHP OO - Aula 2
Fundamentos da Programação PHP OO - Aula 2
 
Fundamentos da Programação PHP OO - Aula 1
Fundamentos da Programação PHP OO - Aula 1Fundamentos da Programação PHP OO - Aula 1
Fundamentos da Programação PHP OO - Aula 1
 
Mantenha sua Privacidade e Segurança na Web com o Tails
Mantenha sua Privacidade e Segurança na Web com o TailsMantenha sua Privacidade e Segurança na Web com o Tails
Mantenha sua Privacidade e Segurança na Web com o Tails
 

Último

Transformações isométricas.pptx Geometria
Transformações isométricas.pptx GeometriaTransformações isométricas.pptx Geometria
Transformações isométricas.pptx Geometriajucelio7
 
A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.silves15
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavrasMary Alvarenga
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManuais Formação
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelGilber Rubim Rangel
 
Aula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdfAula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdfFernandaMota99
 
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumGÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumAugusto Costa
 
Noções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdfNoções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdflucassilva721057
 
historia Europa Medieval_7ºano_slides_aula12.ppt
historia Europa Medieval_7ºano_slides_aula12.ppthistoria Europa Medieval_7ºano_slides_aula12.ppt
historia Europa Medieval_7ºano_slides_aula12.pptErnandesLinhares1
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -Aline Santana
 
Livro O QUE É LUGAR DE FALA - Autora Djamila Ribeiro
Livro O QUE É LUGAR DE FALA  - Autora Djamila RibeiroLivro O QUE É LUGAR DE FALA  - Autora Djamila Ribeiro
Livro O QUE É LUGAR DE FALA - Autora Djamila RibeiroMarcele Ravasio
 
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxSlides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxLuizHenriquedeAlmeid6
 
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptxAULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptxLaurindo6
 
Descreve o conceito de função, objetos, imagens, domínio e contradomínio.
Descreve o conceito de função, objetos, imagens, domínio e contradomínio.Descreve o conceito de função, objetos, imagens, domínio e contradomínio.
Descreve o conceito de função, objetos, imagens, domínio e contradomínio.Vitor Mineiro
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números Mary Alvarenga
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfCamillaBrito19
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxLuizHenriquedeAlmeid6
 

Último (20)

Transformações isométricas.pptx Geometria
Transformações isométricas.pptx GeometriaTransformações isométricas.pptx Geometria
Transformações isométricas.pptx Geometria
 
A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.A horta do Senhor Lobo que protege a sua horta.
A horta do Senhor Lobo que protege a sua horta.
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavras
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envio
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim Rangel
 
Aula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdfAula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdf
 
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumGÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
 
Noções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdfNoções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdf
 
historia Europa Medieval_7ºano_slides_aula12.ppt
historia Europa Medieval_7ºano_slides_aula12.ppthistoria Europa Medieval_7ºano_slides_aula12.ppt
historia Europa Medieval_7ºano_slides_aula12.ppt
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
 
Livro O QUE É LUGAR DE FALA - Autora Djamila Ribeiro
Livro O QUE É LUGAR DE FALA  - Autora Djamila RibeiroLivro O QUE É LUGAR DE FALA  - Autora Djamila Ribeiro
Livro O QUE É LUGAR DE FALA - Autora Djamila Ribeiro
 
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxSlides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
 
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptxAULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
 
Descreve o conceito de função, objetos, imagens, domínio e contradomínio.
Descreve o conceito de função, objetos, imagens, domínio e contradomínio.Descreve o conceito de função, objetos, imagens, domínio e contradomínio.
Descreve o conceito de função, objetos, imagens, domínio e contradomínio.
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdf
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
 

Rotas no Laravel com Controllers

  • 2.
  • 3. E se minha aplicação tiver mil rotas????  Você não precisa criar todas as rotas no arquivo route.php!  Podemos mapear um controller no arquivo de rotas e, a partir dele, aplicar as rotas;  Para isso:  O nome do método no controller deve começar com um dos verbos HTTP como getIsso, postAquilo, etc.;  Para cada parâmetro passado na rota, devemos criar o parâmetro correspondente no método controller;
  • 4.  O melhor? O Laravel cria o controller para você automaticamente!!!  Para isso, vá no seu terminal, acesse a partir dele a pasta C:xampphtdocslaravel e digite o comando: php artisan make:controller Rotas  Um novo controller com o nome Rotas será criado em app/Http/Controllers;
  • 5.  Agora, só precisaremos de uma linha no arquivo de rotas: Route::controller(‘rotas’, ’Rotas’);  Abra o navegador, acesse http://laravel.app/rotas. Como ainda não existe nenhum método de rota, será gerada uma exceção;  Vamos atualizar nosso controller para que tenha um método padrão, a ser executado quando nenhuma rota for especificada;
  • 6.  No controller Rotas, adicione o seguinte método: public function getIndex() { return 'Olá, sou a rota padrão do controller!'; }  Abra o navegador, acesse http://laravel.app/rotas
  • 7.  Também podemos criar o nome que desejarmos para nossas rotas. Exemplo: Logo abaixo do método getIndex, crie o método: public function getRequisicao() { return 'Olá, sou executado a partir de um GET'; }  No arquivo de rotas, adicione a seguinte rota: Route::get('/teste', ['uses' => ‘Rotas@getRequisicao']);  Abra o navegador, acesse http://laravel.app/teste
  • 8.
  • 9. Classes Laravel utilizadas para filtrar os dados de entrada dos nossos sistemas; Funciona como um filtro de requisição, que executa ações antes ou depois de uma requisição HTTP;
  • 10.  Exemplo: Podemos inserir um token CSRF em formulários implementados em Views para que apenas nossos forms realizem requisições. Precisamos religar esse recurso, retirando o comentário da linha de código que implementa esse recurso no arquivo app/Http/Kernel.php;
  • 11.  Exemplo: Agora, vamos criar nossa primeira View! Vá para a pasta resources/views e crie o arquivo contato.blade.php. Edite-o com o seguinte código HTML: <html> <body> <form method=“post” action=“enviar-contato”> {{ csrf_field() }} <p>Nome: <input type=“text” name=“nome”></p> <p>Telefone: <input type=“text” name=“telefone”></p> <p><input type=“submit” value=“enviar”></p> </form> </body> </html>
  • 12.  Exemplo: Agora, vamos criar nossa primeira View! Vá para a pasta resources/views e crie o arquivo contato.blade.php. Edite-o com o seguinte código HTML: <html> <body> <form method=“post” action=“enviar-contato”> {{ csrf_field() }} <p>Nome: <input type=“text” name=“nome”></p> <p>Telefone: <input type=“text” name=“telefone”></p> <p><input type=“submit” value=“enviar”></p> </form> </body> </html> Olha o middleware aqui gente!!!
  • 13. Exemplo: Agora, vamos criar uma rota para chamar nosso formulário de contato no arquivo de rotas: Route::get('/contato', ['uses' => ‘ContatoController@contato']); Route::post('/enviar-contato', ['uses' => ‘ContatoController@enviarContato']);
  • 14.  Em seguida, criaremos o controller responsável por exibir e receber dados do formulário;  Para isso, vá no seu terminal, acesse a partir dele a pasta C:xampphtdocslaravel e digite o comando: php artisan make:controller ContatoController  Um novo controller com o nome ContatoController será criado em app/Http/Controllers;
  • 15.  Precisaremos criar os métodos contato() e enviarContato(Request $request) no controller em questão: public function contato() { return view(‘contato’); } public function enviarContato(Request $request) { dd($request->all()); }  Abra o navegador, acesse http://laravel.dev/contato
  • 16.
  • 17. Até o momento, criamos uma controladora que responde a requisições HTTP do tipo GET e POST; Mas... E quando eu precisar responder outros tipos de requisição, como PUT ou DELETE?;
  • 18.  Exemplo: Vá no seu terminal, acesse a partir dele a pasta C:xampphtdocslaravel e digite o comando: php artisan make:controller BasicoController  Um novo controller com o nome BasicoController será criado em app/Http/Controllers;
  • 19.  No controller BasicoController, adicione o seguinte método: public function putBasico() { return View(‘put’); } public function put (Request $request) { echo("Nome digitado: " . $request->input('nome')); }
  • 20. Em seguida, vamos atualizar nosso arquivo de rotas: Route::get('/put', ['uses' => ‘BasicoController@putBasico']); Route::put('/put', ['uses' => ‘BasicoController@put']);
  • 21.  Agora, começaremos a manipular a camada de visualização de dados. Crie a view put.blade.php na pasta resource/views: <html> <body> <form method="post" action=“/put"> {{ csrf_field() }} <input type=“hidden” name=“_method” value=“PUT”> <p>Nome: <input required type="text" name="nome"></p> </form> </body> </html>
  • 22. Abra o navegador e acesse http://laravel.dev/contato
  • 23.  Uma outra forma de alterar o tipo de requisição em um form HTML: <html> <body> <form method="post" action=“/put"> {{ csrf_field() }} {{ method_field(‘PUT’) }} <p>Nome: <input required type="text" name="nome"></p> </form> </body> </html>
  • 24.
  • 25. Controllers também podem ser concebidas com o objetivo de abstrair funcionalidades CRUD (Criação, Leitura, Atualização e Exclusão); O Laravel pode não só criar tais tipos de classe automaticamente, como também as assinaturas de método necessárias e associar um tipo de requisição para cada método;
  • 26.  Exemplo: Vá no seu terminal, acesse a partir dele a pasta C:xampphtdocslaravel e digite o comando: php artisan make:controller LivroController  Um novo controller com o nome LivroController será criado em app/Http/Controllers;  OBS.: Os alunos com o Homestead deverão digitar --resource no final do comando!
  • 27.  Verifique que o Laravel já criou as assinaturas de método de CRUD automaticamente:  index()  create()  store(Request $request)  show($id)  edit($id)  update(Request $request, $id)  destroy($id)
  • 28.  Outro poder de controladoras de recurso é a simplificação do registro de rotas. Continuando nosso exemplo, acesse o arquivo de rotas e registre a seguinte rota: Route::resource(‘livro', ‘LivroController’);
  • 29.  Com esse registro de rota, o Laravel automaticamente atribui as seguintes requisições HTTP e as rotas para cada método da controladora de recurso: Tipo URI Ação GET /livro index GET /livro/create create POST /livro store GET /livro/{pagina} show GET /livro/{pagina}/edit edit PUT/PATCH /livro/{pagina} update DELETE /livro/{pagina} destroy
  • 30.  Continuando o exemplo, no controller LivroController, edite os seguintes métodos: public function index() { return ‘Olá, usuário!’; } public function create () { return ‘Aqui acessarei views para a inserção de dados!’; }
  • 31.
  • 32.  As Views são classe do Modelo MVC responsáveis pela exibição de dados para o usuário após um determinado processamento;  O Blade é o motor de renderização que o Laravel adota (notaram o .blade inserido no nome dos arquivos de view?);  O Blade permite uma sintaxe mais enxuta na criação de layouts, além de disponibilizar comandos para a geração de conteúdo dinâmico (geralmente começam por @);
  • 33.  Exemplo: O Blade permite ao programador definir seções de página de forma muito simples. Crie na pasta /resource/views a view layout.blade.php: <html> <body> @section(‘sidebar’) Este é o sidebar da página @show <div>Olá, @yield(‘content’)!</div> </body> </html>
  • 34.  Continuando nosso exemplo, acesse o arquivo de rotas e registre a seguinte rota: Route::get('/layout', function() { return view('layout'); });  Abra o navegador e acesse http://laravel.dev/layout
  • 35.  Exemplo: O Blade permite ao programador reutilizar outras views na criação de novas views. Crie na pasta /resource/views a view pagina1.blade.php: @extends(‘layout’)  Continuando nosso exemplo, acesse o arquivo de rotas, adicione a seguinte rota e acesse http://laravel.dev/pagina1 : Route::get('/pagina1', function() { return view(‘pagina1'); });
  • 36.  Exemplo: O Blade permite ao programador sobrescrever dados de Views. Crie na pasta /resource/views a view pagina2.blade.php: @extends(‘layout’) @section(‘sidebar’) Esse é o novo sidebar da página 2!!!! @endsection
  • 37. Continuando nosso exemplo, acesse o arquivo de rotas, adicione a seguinte rota e acesse http://laravel.dev/pagina2 : Route::get('/pagina2', function() { return view(‘pagina2'); });
  • 38.  Exemplo: O Blade permite ao programador inserir dados em Views. Atualize a view pagina2.blade.php e acesse http://laravel.dev/pagina2 : @extends(‘layout’) @section(‘sidebar’) Esse é o novo sidebar da página 2!!!! @endsection @section(‘content’) Leão da Ilha do Retiro @endsection
  • 40. É possível utilizar PHP puro nas views para geração de conteúdo dinâmico. Mas isso é uma boa prática??? O ideal é só inserir scripts PHP nos controllers e models! O Blade fornece uma sintaxe e instruções que tornam a codificação de Views mais enxuta e organizada;
  • 41. Exemplo: Acesse o arquivo de rotas e registre a seguinte rota: Route::get('/exibir-dados', function() { return view(‘exibindo_dados'); });
  • 42. Crie na pasta /resource/views a view exibindo_dados.blade.php e acesse http://laravel.dev/exibir-dados : <h1>{{ $titulo or ‘Título não encontrado’ }}</h1> <p>{{ $texto or ‘Texto não encontrado’ }}</p> If/else muito enxuto!
  • 43.  Exemplo: Agora, acesse o arquivo de rotas , atualize a rota exibir-dados e acesse http://laravel.dev/exibir-dados : Route::get('/exibir-dados', function() { return view(‘exibindo_dados‘, [ ‘titulo’ => ‘Meu Blog’, ‘texto’ => ‘Sejam bem vindos!’, ]); });
  • 44. O Blade também permite escapar dados de maneira simples; Escapar dados é muito importante por questões de segurança. Assim, evitamos que o usuário envie dados maliciosos a partir de técnicas como SQL injection e XSS;
  • 45. Exemplo: Acesse o arquivo de rotas e registre a seguinte rota: Route::get('/nao-esc', function() { return view(‘exibindo‘, [ ‘conteudo’ => ‘<h1>Sport</h1>’ ]); });
  • 46. Crie na pasta /resource/views a view exibindo.blade.php e acesse http://laravel.dev/nao-esc : {{ $conteudo }} Sem escape, as tags HTML que foram enviadas como parâmetros de view foram enviadas para a aplicação (eu poderia ter enviado um Javascript malicioso, concorda?);
  • 47. Agora edite a view exibindo.blade.php e acesse http://laravel.dev/nao-esc : {!! $conteudo !!} Com escape, as tags HTML que foram enviadas como parâmetros de view foram “escapadas”;
  • 48. O Blade também permite inserir estruturas de controle e repetição em views; Tais estruturas auxiliam na geração de conteúdo dinâmico a partir de uma sintaxe bastante enxuta;
  • 49. Exemplo: Acesse o arquivo de rotas e registre a seguinte rota: Route::get('/se', function() { return view(‘vazio‘, [ ‘lista’ => [] ]); });
  • 50. Agora edite a view vazio.blade.php e acesse http://laravel.dev/se : @if(count($lista) == 0) <p>Não existe dados na lista</p> @else <p>Existem dados na lista</p> @endif