Um guia para iniciantes para validação do Laravel
Quando construímos um site no Laravel, devemos saber sobre a validação do Laravel. O Laravel oferece uma maneira diferente de validar seus dados recebidos. Neste artigo, estudamos alguns fundamentos sobre as validações do Laravel.
Ao construir um aplicativo, devemos aplicar validações do lado do cliente e do lado do servidor sem falhas. Fazendo isso, podemos proteger nosso aplicativo de dados desnecessários. Como resultado, isso nos poupará muito tempo limpando dados perdidos do aplicativo.
Dito isso, vamos dar uma olhada em como aplicar a validação do Laravel em sua aplicação.
Para o nosso tutorial, usamos um formulário de exemplo que possui 2 campos, título e descrição. Vamos aplicar a validação e se a validação falhar, ela será exibida em nossa visão.
Validação Laravel
Para começar, precisamos incluir a instrução abaixo em nosso arquivo de controlador.
Coloque esta declaração antes do início do seu controlador como abaixo.
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use Validator;
class PostController extends Controller
{
.....
}
Antes de escrever o código de validação real, vamos ao arquivo de visualização. Criamos um formulário simples com 2 campos título e descrição.
<form action="{{ url('post') }}" method="post">
<div class="form-group">
<label for="exampleInputTitle">Post Title</label>
<input type="text" name="title" id="exampleInputTitle" />
</div>
<div class="form-group">
<label for="exampleInputBody">Post Body</label>
<textarea class="form-control" name="body" id="exampleInputBody" rows="10"></textarea>
</div>
{{ csrf_field() }}
<button type="submit" class="btn btn-default">Submit</button>
</form>
Quando enviarmos um formulário, ele fará uma chamada para o store()
método do nosso controlador. No seu caso, talvez o seu método seja diferente. Portanto, em nosso método, escreveremos o código de validação da seguinte maneira.
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'title' => 'required|max:255',
'body' => 'required',
]);
if ($validator->fails()) {
return redirect('post/create')
->withErrors($validator)
->withInput();
}
//safe to proceed form
}
Você pode notar que passamos duas chaves ‘título’ e ‘corpo’. Estes são os nomes dos nossos elementos de formulário. Aqui, o Laravel verifica se os dois campos não estão vazios e se os campos de título não ultrapassam 255 caracteres.
Se alguma das validações falhar, o usuário irá redirecionar para a página que passamos para um método redirect().
Exibir mensagens de erro em uma visualização
Aplicamos a validação do lado do servidor. Agora, vamos dar uma olhada em como exibir mensagens de erro.
Digamos que a validação falhe em nosso caso e agora precisamos exibir mensagens de erro em nosso formulário. Existem 2 maneiras de mostrar os erros nas visualizações do Laravel. Em primeiro lugar, podemos exibir todas as mensagens de erro juntas no topo de um formulário. A propósito, pode-se exibi-lo ao lado de cada campo que contém um erro.
Para exibir a mensagem de erro na parte superior do formulário, adicione o código abaixo acima da tag do formulário.
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
Este código exibirá a mensagem de erro conforme mostrado na captura de tela abaixo:
Na segunda forma, imprimir a mensagem de erro após cada campo. Nesse caso, nosso código é o seguinte:
<div class="form-group">
<label for="exampleInputTitle">Post Title</label>
<input type="text" name="title" id="exampleInputTitle" />
@if ($errors->has('title'))
<span class="error">
{{ $errors->first('title') }}
</span>
@endif
</div>
<div class="form-group">
<label for="exampleInputBody">Post Body</label>
<textarea class="form-control" name="body" id="exampleInputBody" rows="10"></textarea>
@if ($errors->has('body'))
<span class="error">
{{ $errors->first('body') }}
</span>
@endif
</div>
Observe que estamos usando @if ($errors->has('title'))
para verificar se o campo ‘title’ tem um erro de validação. Se este campo tiver erro, então o imprimimos usando {{ $errors->first('title') }}
. A mesma lógica que aplicamos para o campo ‘corpo’. Dê uma olhada na imagem abaixo deste tipo.
Esperamos que você entenda como aplicar a validação do Laravel em sua aplicação. Por favor, compartilhe suas idéias na seção de comentários abaixo.