Vamos analisar a parte de erros do Laravel 9 de forma simplificada? No Laravel 9 a variável predefinida $errors é do tipo MessageBag e isso quer dizer que ela é uma "sacola contendo muitas informações". Essa "sacola" por sua vez é rica em alguns detalhes e prontamente pode nos entregar informações preciosas. Imagine que na sua action store (inserção de dados) você precisa validar campos e torná-los obrigatórios e com tamanho mínimo, por exemplo: public function store(Request $request) { $request->validate([ 'nome' => ['required', 'min:3'] ]); Veja que no momento em que o input name="nome" vem vazio OU não possui tamanho mínimo de 3 caracteres o Laravel já torna o erro uma FLASH MESSAGE, isso quer dizer que teremos uma session temporaria de apenas 1 request que vai guardar a mensagem de erro para exibir para o usuário final esse erro. @if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif Outro detalhe importante é que podemos alimentar o value do input name="nome" com o antigo valor para que o user saiba o que aconteceu, no seu componente do Blade você pode informar a função old do Blade que também vai trazer o "nome" que foi preservado no momento do $request->validate, a sintaxe abaixo eu explico rapidinho: <x-layout title="Novo Produto"> <x-produtos.form :action="route('produtos.store')" :nome="old('nome')" :update="false" /> Explicando a primeira linha, temos o componente chamado layout (Blade) que contém um template padrão e dentro dele estamos preenchendo o {{$slot}} com outro componente que está na pasta produtos/form.blade.php e estamos enviando parâmetros com o nome :action ($action), :nome ($nome) e :update ($update), e aí é que mora a magia, a função old() do Blade vai trazer o input name="nome" que foi preenchido pelo user antes do erro, assim, quando o $errors (MessageBag) for disparado o user vai ter os dados antigos enviados. Lembrando que $errors preenche Flash Messages Automaticamente (sessões de "um tiro só" kkkkk, ok? Isso é bom para reportar usuários sobre o que houve de errado).
One Comment
Leave a Reply
This site uses Akismet to reduce spam. Learn how your comment data is processed.
[…] haveriam dois lugares para tal, sem contar que é código repetido (veja o link que falo sobre messagebag e $errors no Laravel). É notório que á code smell ali se replicarmos aquela validação de exemplo e para sanar isso […]