Crud com Laravel - #7 Validações
29/01/2020Nesse tutorial iremos realizar as validações no formulário do nosso CRUD com Laravel. Nossa validação abrigará tanto o front quanto o backend.
Validações com Laravel
Nossa primeira validação será no html create.blade.php. Nossos inputs receberão o atributo required:
<input class="form-control" type="text" name="title" id="title" placeholder="TÃtulo:" required><br>
<select class="form-control" name="id_user" id="id_user" required>
<option value="">Autor</option>
@foreach($users as $user)
<option value="{{$user->id}}">{{$user->name}}</option>
@endforeach
</select><br>
<input class="form-control" type="text" name="pages" id="pages" placeholder="Páginas:" required><br>
<input class="form-control" type="text" name="price" id="price" placeholder="Preço:" required><br>
No lado backend, faremos as validações padrões do Laravel. Para isso, utilizaremos o comando no terminal:
php artisan make:request BookRequest
Após o comando você pode reparar que foi criada a pasta request dentro de http com o arquivo BookRequest.php. O arquivo BookRequest ficará assim:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class BookRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'title'=>'required',
'pages'=>'required|numeric'
];
}
public function messages()
{
return [
'title.required' => 'Coloque o tÃtulo!',
'pages.numeric' => 'Coloque números para as páginas.',
];
}
}
No BookController, vamos alterar o método store trocando o parâmetro Request por BookRequest:
public function store(BookRequest $request)
{
$cad=$this->objBook->create([
'title'=>$request->title,
'pages'=>$request->pages,
'price'=>$request->price,
'id_user'=>$request->id_user
]);
if($cad){
return redirect('books');
}
}
Não se esqueça de linkar o BookRequest no alto do nosso Controller:
use App\Http\Requests\BookRequest;
Agora, para exibirmos a mensagem de alerta de validação, dentro da nossa views, vamos criar uma div no alto do formulário:
@if(isset($errors) && count($errors)>0)
<div class="text-center mt-4 mb-4 p-2 alert-danger">
@foreach($errors->all() as $erro)
{{$erro}}<br>
@endforeach
</div>
@endif
Traduzindo o Laravel para PT-BR
Basta você pesquisar no Google por Laravel Language e baixar os pacotes em português. Copie a pasta pt-br para dentro de resources/lang. Posteriormente acesse config/app.php e localize as linhas locale e troque por pt-br
Ã? possÃvel também cadastrar mensagens personalizadas, basta usar o método messages() como exemplificado no código do inÃcio da página.
Por hoje é só! Sucesso nos códigos e na vida!