Curso de Laravel para Noobs - #31 Custom Request
19/02/2024Neste tutorial aprenderemos a criar as chamadas Custom Request ou Requisições Personalizadas com mensagens de erro próprias e validações específicas.
Fazendo Requisições Personalizadas - Laravel
resource/views/carros.blade.php
Vamos começar criando o formulário que irá enviar os dados para serem trabalhados no backend:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
.alert-danger {
color: #721c24;
background-color: #f8d7da;
border-color: #f5c6cb;
}
.alert {
position: relative;
padding: 0.75rem 1.25rem;
margin-bottom: 1rem;
border: 1px solid transparent;
border-radius: 0.25rem;
}
</style>
</head>
<body>
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<form name="form" id="form" method="post" action="/processa">
@csrf
<input type="text" name="numero" id="numero">
<input type="submit" value="Enviar">
</form>
</body>
</html>
routes/web.php
Vamos criar a rota da view acima e também do arquivo que vai processar os dados do formulário:
Route::get('/',[TodoController::class,'index'])->name('todo.index');
Route::post('/processa',[TodoController::class,'processa'])->name('todo.processo');
app/Http/Controllers/TodoController.php
Vamos criar agora os métodos no controller que vai receber a requisição:
public function index():View
{
$data = Todo::orderBy('nome')->get();
return view('carros',compact('data'));
}
public function processa(ThiagoRequest $request)
{
echo 'oi';
}
app/Http/Request/ThiagoRequest.php
Repare que no código acima fazemos uma referencia a ThiagoRequest. Portanto precisamos criar essa request através do comando:
php artisan make:request ThiagoRequest
E vamos inserir as regras nesta nova request:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class ThiagoRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'numero' => 'required|numeric|max:255'
];
}
public function messages(): array
{
return [
'numero.required' => 'O número é obrigatório.',
'numero.numeric' => 'Este campo deve ser preenchido com um número',
];
}
}
Por hoje é só! Fiquem todos com Deus! Sucesso nos códigos e na vida!
Precisa de ajuda? webdesignemfoco@gmail.com
Porque a um pelo Espírito é dada a palavra da sabedoria; e a outro, pelo mesmo Espírito, a palavra da ciência; E a outro, pelo mesmo Espírito, a fé; e a outro, pelo mesmo Espírito, os dons de curar; E a outro a operação de maravilhas; e a outro a profecia; e a outro o dom de discernir os espíritos; e a outro a variedade de línguas; e a outro a interpretação das línguas. Coríntios 12:8-10