Cursos / Informática para Internet / Plataformas de aplicações Web / Aula
O roteamento no Laravel segue um padrão bem simples e pode ser configurado sem arquivos de roteamento complicados.
Um exemplo de uma rota no Laravel que responde na url /ola e retorna o conteúdo "mundo":
use Illuminate\Support\Facades\Route;
Route::get('/ola, function () {
return 'Mundo';
});
As rotas são definidas (como visto acima) utilizando a linguagem PHP e os arquivos que contém essas rotas estão na pasta "routes" da aplicação que são automaticamente carregados pelo RouteServiceProvider. O arquivo routes/web.php definem as rotas que são para a interface web da sua aplicação (O Laravel suporta também tem outros tipos de interface, como o Console).
Arquivo de rotas padrão de uma aplicação exemplo Laravel. Fonte: Autor.
Como visto na imagem acima a aplicação padrão criada pelo Laravel define no arquivo routes/web.php uma rota com o método GET (Routes::get) que responde a "/" raiz do site e recebe um segundo parâmetro uma função PHP que retorna uma view chamada "welcome". Isso faz com que o arquivo resources/views/welcome.blade.php seja processado e seu conteúdo retornado ao navegador.
Todas as rotas são definidas dessa forma, com um comando que define o método da rota, a uri (caminho na URL da requisição) e uma função PHP chamada de função callback que executa quando a rota é atingida.
Para mais informações sobre rotas no Laravel acesse: https://laravel.com/docs/8.x/routing
No lugar de definir funções de callback nas suas rotas, é possível redirecionar as url nas rotas para métodos de classes PHP especiais chamadas de controllers, tornando seu código mais organizado.
Um exemplo de um controller no Laravel:
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Models\User;
class UserController extends Controller
{
/**
* Show the profile for a given user.
*
* @param int $id
* @return \Illuminate\View\View
*/
public function show($id)
{
return view('user.profile', [
'user' => User::findOrFail($id)
]);
}
}
Veja no exemplo do controller acima que foi criado uma classe chamada UserController que herda (extends) de Controller e tem um método chamado "show" que recebe um atributo chamado $id
(variáveis em PHP começam com $
).
Esse método "show" por sua vez retorna uma view chamada user.profile, que também por sua vez é um arquivo PHP dinâmico e é passado pra ele um dado chamado 'user' com o valor User::findOrFail($id)
, que é um comando especial do laravel que busca um usuário no banco através de um determinado ID passado. Esse User::findOrFail($id)
faz parte da ferramenta de acesso a banco de dados do Laravel chamada Eloquent ORM. A renderização da página PHP com o user.profile terá acesso assim aos dados do usuário para exibir o HTML apropriado.
Uma rota que redireciona para esse Controller seria assim:
use App\Http\Controllers\UserController;
Route::get('/user/{id}', [UserController::class, 'show']);
Essa rota acima (o comando Route::get….) recebe o primeiro parâmetro como o formato da URI que casa com a rota, nesse caso /user/{id} e note que o {id} é um parâmetro dinâmico fazendo ela casar com /user/1, /user/2, /user/332 e assim por diante, tornando o número passado depois de /user o valor da variável "id" especificada. O comando recebe um segundo argumento que é uma associação chave => valor com a classe do Controller que será redirecionado o comando (UserController::class) e em seguida o nome do método que será executado nessa classe 'show', que receberá como parâmetro o id do usuário que está na URL.
Para estudar mais sobre Controllers no Laravel acesse: https://laravel.com/docs/8.x/controllers
As views no Laravel são por padrão arquivos PHP localizados na pasta resources/views. O trabalho de uma view é ser processada e retornar um HTML como resultado final que será enviada ao navegador. Abaixo, um exemplo simples de uma view no Laravel:
<html>
<body>
<h1>Hello, {{ $name }}</h1>
</body>
</html>
O arquivo PHP que contém essa view de exemplo poderia estar em resources/views/meu_perfil.blade.php, por exemplo, e como pode ser observado é uma mistura de HTML com código de programação.
Nesse exemplo acima é possível observar que existe um código diferente do visto em HTML: {{ $name }}
Esse {{ $name }}
é um comando especial na view que dá a instrução para substituir esse trecho pelo valor da variável $name
, passada pela rota ou controller que tentou processar essa view para retornar o resultado HTML gerada por ela para o navegador. Se o valor da variável $name for 'Joaquim', então a palavra Joaquim ficaria no lugar de {{ $name }}
no resultado do HTML final gerado pela view.
Um exemplo de uma rota que solicitaria o processamento e retorno dessa view mostrada acima seria:
Route::get('/perfil', function () {
return view('meu_perfil', ['name' => 'Joaquim']);
});
Note que essa rota responde a URL /perfil e retorna o HTML retornado pelo processamento da view 'meu_perfil' que é executada com a variável $name = 'Joaquim'
por causa da associação chave-valor ['name' => 'Joaquim'] passada como argumento.
Para saber mais sobre views no Laravel acesse: https://laravel.com/docs/8.x/views
As views no Laravel usam uma motor de templates chamado Blade que tem uma série de funcionalidades que permite a criação de HTMLs dinâmicos de maneira simples.
PHP é uma linguagem famosa por ser facilmente integrada com o HTML. Arquivos PHP podem ser uma mistura entre PHP e HTML e é possível usar o PHP puro para criar HTMLs dinâmicos.
O Blade trás mais funcionalidades e facilidade na criação de páginas dinâmicas no Laravel, muito similar ao que o EJS faz com relação ao Javascript e HTML no processamento do lado do servidor.
Com o Blade é possível se criar blocos condicionais (ifs), Loops, classes condicionais, usar PHP puro no HTML, etc.
Para saber mais sobre o template Blade no Laravel acesse: https://laravel.com/docs/8.x/blade
O Laravel suporta diversos bancos de dados e o acesso a esses dados são realizados através de uma ferramenta inclusa chamada EloquentORM.
O EloquentORM é um ORM (Object-Relational Mapper) que facilita a interação com diversos bancos de dados. Quando você está utilizando o Eloquent, cada tabela tem um "Model" correspondente, que é utilizado para interagir com essa tabela, permitindo você obter os dados da tabela, inserir, remover e atualizar.
O Laravel tem uma ferramenta de linha de comando que permite, dentre outras coisas, que você crie novos Models através de comandos do terminal.
Para saber mais sobre o EloquentORM visite: https://laravel.com/docs/8.x/eloquent
Versão 5.3 - Todos os Direitos reservados