Requests no Laravel

Laravel
Tempo de leitura: 4 minutos

Requests no Laravel: No desenvolvimento web, as requisições HTTP são a forma como os usuários interagem com as aplicações. No Laravel, a classe Request oferece uma interface elegante e poderosa para lidar com esses dados de entrada. Ela permite que você acesse e manipule os dados enviados pelo usuário de forma fácil e segura.

Neste artigo, vamos explorar em detalhes como trabalhar com requisições no Laravel, desde os conceitos básicos até as funcionalidades mais avançadas.

O que é uma Request?

Uma requisição no Laravel é um objeto que encapsula todos os dados enviados pelo cliente em uma requisição HTTP, como os dados do formulário, os headers, os cookies e o método HTTP utilizado (GET, POST, PUT, DELETE, etc.). A classe Request fornece métodos para acessar e manipular esses dados de forma conveniente.

Acessando os Dados da Requisição

Para acessar os dados de uma requisição, você pode injetar a classe Request no seu controlador:

PHP

namespace AppHttpControllers;

use IlluminateHttpRequest;

class PostController extends Controller
{
    public function store(Request $request)   
    {
        $title = $request->input('title');
        $content = $request->input('content');

        // ...
    }
}
  • $request->input('title'): Obtém o valor do campo title do formulário.

Métodos Comuns para Acessar Dados

  • $request->all(): Obtém todos os dados da requisição como um array.
  • $request->only('field1', 'field2'): Obtém apenas os campos especificados.
  • $request->except('field1', 'field2'): Obtém todos os campos, exceto os especificados.
  • $request->has('field'): Verifica se um campo existe.
  • $request->filled('field'): Verifica se um campo existe e não está vazio.
  • $request->header('header_name'): Obtém o valor de um header HTTP.
  • $request->cookie('cookie_name'): Obtém o valor de um cookie.
  • $request->file('file'): Obtém um arquivo enviado através do formulário.

Validação de Dados

O Laravel oferece um sistema de validação robusto para garantir que os dados enviados pelo usuário sejam válidos.

PHP

public function store(Request $request)
{
    $request->validate([
        'title' => 'required|min:5',
        'content' => 'required',
    ]);

    $title = $request->input('title');
    $content = $request->input('content');

    // ...
}
  • $request->validate(): Valida os dados da requisição de acordo com as regras definidas;

Algumas Regras de validação:

  • required: O campo é obrigatório.
  • min:5: O campo deve ter no mínimo 5 caracteres.
  • max:255: O campo deve ter no máximo 255 caracteres.
  • email: O campo deve ser um endereço de e-mail válido.
  • unique:users: O valor do campo deve ser único na tabela users.

Form Requests

Para organizar melhor a validação de dados, você pode criar classes de Form Request. Através do Artisan, criamos essa classe com o seguinte comando:

Bash

php artisan make:request StorePostRequest

PHP

namespace AppHttpRequests;

use IlluminateFoundationHttpFormRequest;

class StorePostRequest extends FormRequest
{
    // public function authorize()   
    // {
    //     return true;    // Você pode personalizar essa lógica aqui
    // }

    public function rules()
    {
        return [
            'title' => 'required|min:5',
            'content' => 'required',
        ];
    }
}

Neste primeiro momento, como estamos estudando apenas as validações, podemos comentar ou remover o método authorize(), e então, injetar a classe de Form Request no Controller:

PHP

public function store(StorePostRequest $request)
{
    // A validação já foi realizada

    $title = $request->input('title');
    $content = $request->input('content');

    //...
}

Lidando com Erros de Validação

Quando uma validação falha, o Laravel redireciona automaticamente para a página anterior, exibindo as mensagens de erro. Você pode personalizar a forma como os erros são exibidos utilizando views e o objeto $errors.

HTML

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
</if>

Old Input

O Laravel armazena automaticamente os dados antigos de um formulário em caso de erros de validação. Isso é útil para preencher novamente os campos do formulário com os valores anteriores.

HTML

<input type="text" value="{{ @old('name') }}" name="name" id="name">

Redirecionamentos com Dados

Você pode redirecionar o usuário para outra página, passando dados para a nova rota através da sessão:

PHP

return redirect()->route('users.index')->with('success', 'Usuário criado com sucesso!');

Outros Recursos da Classe Request

  • Sessões: Você pode acessar e manipular dados de sessão através da classe Request.
  • Cookies: Você pode ler e escrever cookies.
  • Arquivos: Você pode lidar com arquivos enviados através de formulários.

Exemplo Completo: Criando um Post

PHP

// routes/web.php
Route::post('/posts', 'PostController@store');

// app/Http/Controllers/PostController.php
namespace AppHttpControllers;

use AppHttpRequestsStorePostRequest;
use AppPost;

class PostController extends Controller   
{
    public function store(StorePostRequest $request)
    {
        $post = Post::create([
            'title' => $request->title,
            'content' => $request->content,
        ]);

        return redirect()->route('posts.show', $post);
    }
}

Conclusão

Requests no Laravel: A classe Request do Laravel é uma ferramenta poderosa para lidar com dados de entrada em suas aplicações. Ao entender como utilizar seus métodos e recursos, você poderá criar aplicações mais seguras, robustas e fáceis de manter.

Mas antes de dominar o Laravel, se for o seu caso, toda jornada tem um início. Vamos entender quais são os conhecimentos básicos necessários para aproveitar ao máximo este poderoso framework. Para iniciar seus estudos no Laravel, você precisará dominar as seguintes tecnologias:

HTML
HTML
CSS
CSS
Javascript
JavaScript
SQL
SQL
Capa Curso PHP
PHP

E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados:

Hospedagem Hostinger
Ofertas Amazon
Amazon Prime
Author: Thiago Rossi