Skip to content

Laravel – Entendendo controllers de forma simples

Laravel é um Framework que o usa o Padrão de Projeto MVC (Model View Controller – nascido em 1970 aproximadamente) por natureza. Uma de suas mais fortes armas é a capacidade de gerir um projeto de forma 100% adequada a esse padrão e é nisso que vamos nos ater nessa noite.
As aplicações que usam MVC possuem um ponto de entrada, nesse caso, no Laravel a parte de entrada fica em —> PastaOndeOLaravelEstáInstalado/routes/web.php

Dentro desse arquivo já dá para ver o conteúdo de uma rota padrão (‘/’) respondendo para o Welcome do Laravel:

Route::get('/', function () {
    return view('welcome');
});

De imediato já sabemos aqui que uma gama de possibilidades surge.
Para criarmos uma Controller nova basta rodarmos o segunite comando em nosso terminal:

php artisan make:controller NomeDaController

Isso vai criar uma classe no seguinte path:
PastaDoLaravel/app/Http/Controllers/NomeDaController.php

Então, a título de exemplo vamos criar uma chamada Séries de Séries de Filmes/Animes:

php artisan make:controller SeriesController

Pronto, criamos uma controller oficialmente pelo Laravel com o artisan!

O bom do artisan é que ele cria a classe certinha e já deixa ela no namespace correto, isso garante acertividade máxima ao invés de contarmos com a possibilidade de errar algum path ou digitação no geral.
A título de detalhe temos dentro desse arquivo SeriesController um detalhe:

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class SeriesController extends Controller
{
    ...

O fato dele extender de Controller isso já dá mais ferramentas para uso. Lembrando que Facades ali não é o padrão FACADE (design pattern), é um nome que foi dado pelos desenvolvedores do Laravel.

Algo peculiar do artisan no momento da criação de uma Controller é o parâmetro resource que gera todas as ACTIONS pré-definidas para uso.

Se considerarmos o comando a seguir:
php artisan make:controller LojaController --resource 

O termo --resource indica para o artisan a ordem de criar a classe LojaController contendo todos os ACTIONS de uma controller Laravel,  e isso implica em dizer que estamos deixando a controller com uma cara de "CRUD", como pode ser visto aqui:

https://laravel.com/docs/9.x/controllers#actions-handled-by-resource-controller

E para testes finais, caso queira ver sua controller funcionando é tranquilo, no arquivo PastaDoLaravel/routs/web.php você deve adicionar a seguinte linha:

Route::get('/areadosite', [LojaController::class, 'index']);

E após chamar o namespace oficial (isso já estará no arquivo) você deve usar o namespace de sua controller, no caso vou colocar como ficaria o topo do seu arquivo:

<?php

use App\Http\Controllers\LojaController;
use Illuminate\Support\Facades\Route;


Com isso já teremos sua Controller LojaController rodando quando alguém tentar acessar http:// OU https://enderecoDoSeuSiteOUIP/areadosite, isso vai trazer o conteúdo de LojaController.php que está em PastaDoLaravel/app/Http/Controllers/LojaController.php
O argumento [índice de array chamado index] indica a ACTION do Laravel na controller LojaController que deve conter mais ou menos isso aqui:

class SeriesController extends Controller
{
 public function index() {
    //faça alguma coisa
 }

}

Perceba que começamos com GET (verbos HTTP):
Route::get('/areadosite', [LojaController::class, 'index']);

Em resumo falamos -> Da Classe Estática Route pelo método estático get (verbo GET), ao acessar domínio.com.br/areadosite CHAME a controller LojaController (classe) e o método dela chamado index para responder a esta requisição!

No MVC está certinho, haja vista que a controller destinada pelo ponto de entrada (web.php) vai decidir se precisa jogar um visual (View), se vai precisar de dados, por exemplo de um banco de dados (Model) e ela por si, a controller gerenciando aonde isso vai (Controller).

Bom, pessoal, sobre controllers creio que já entendemos o básicão e o mínimo nesse tour do Laravel. Vou falar sobre View (Blade no Laravel) e vou falar sobre Model (Eloquent no Laravel), ok? Abração!

Para entender melhor os Request Methods, os famosos "Verbos HTTP" veja mais em:
https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.