How to fix validation messages?

Asked

Viewed 545 times

0

I am learning to program in Laravel with Vuejs, I am beginner, I started to develop a simple CRUD and managed to implement all the functionality of a CRUD, including field validations, my problem is with field validations, in your return messages as shown below

inserir a descrição da imagem aqui

That code is right here on this page

<form method="POST" v-on:submit.prevent="createRegistro">
      <div class="modal fade" id="create" tabindex="2" role="dialog" aria-hidden="true">
            <div class="modal-dialog modal-lg ">
                <div class="modal-content">
                    <div class="modal-header">
                      <button type="button" class="close" data-dismiss="modal">
                          <span>&time;</span>
                      </button>
                      <h4>Novo Imóvel</h4>
                    </div>
                    <div class="modal-body">

                            <label for="descricao">Criar Imóvel</label>
                            <input type="text" name="descricao"placeholder="Descrição do imóvel" class="form-control" v-model="newDesc">
                            <span v-for="error in errors" class="text-danger">@{{ error }}</span>


                                      <div class="row">
                                          <div class="col-md-6">
                                              <div class="form-group">
                                                  <label for="preco">Preço</label>
                                                  <input type="text" class="form-control" placeholder="Preço" name="preco" v-model="newPreco" >
                                                  <span v-for="error in errors" class="text-danger">@{{ error }}</span>
                                              </div>
                                          </div>
                                          <div class="col-md-6">
                                              <div class="form-group">
                                                  <label for="qtdQuartos">Quantidade de Quartos</label>
                                                  <input type="number" class="form-control" placeholder="Quantidade de Quartos" name="qtdQuartos" v-model="newQtdQuartos">
                                                  <span v-for="error in errors" class="text-danger">@{{ error }}</span>
                                              </div>
                                          </div>
                                      </div>

                                    <div class="row">
                                          <div class="col-md-6">
                                                <div class="form-group">
                                                      <label for="tipos">Tipo do Imóvel</label>
                                                      <select class="form-control" name="tipos" v-model="newTipo">
                                                      <option selected>Apartamento</option>
                                                      <option>Casa</option>
                                                      <option>Kitnet</option>
                                                    </select>
                                                    <span v-for="error in errors" class="text-danger">@{{ error }}</span>
                                                </div>
                                          </div>

                                          <div class="col-md-6">
                                                    <div class="form-group">
                                                        <label for="finalidade">Finalidade do imóvel</label>
                                                        <select class="form-control" name="finalidade" v-model="newFinalidade">
                                                            <option>Venda</option>
                                                            <option>Locação</option>
                                                        </select>
                                                    </div>
                                                <span v-for="error in errors" class="text-danger">@{{ error }}</span>
                                          </div>
                                    </div>

                                    <h4>Endereço</h4>
                                    <hr>

                                      <div class="form-group">
                                              <label for="logradouroEndereco">Logradouro</label>
                                              <input type="text" class="form-control" placeholder="Logradouro" name="logradouroEndereco" v-model="newLogradouroEndereco">
                                              <span v-for="error in errors" class="text-danger">@{{ error }}</span>
                                      </div>
                                      <div class="row">
                                          <div class="col-md-10">
                                              <div class="form-group">
                                                  <label for="bairroEndereco">Bairro</label>
                                                  <input type="text" class="form-control" placeholder="Bairro" name="bairroEndereco"  v-model="newBairroEndereco">
                                                  <span v-for="error in errors" class="text-danger">@{{ error }}</span>
                                              </div>
                                          </div>
                                      </div>

                    </div>


                    <div class="modal-footer">
                        <input type="submit" class="btn btn-primary" value="Salvar">
                    </div>
                </div>
            </div>
        </div>
</form>

Please check my repository below, and also ask for suggestions on how to exchange these messages for something more attractive, I’m asking because I don’t even know where to start.

Repository

1 answer

1


You can create custom error messages for each type of error within your store, example:

 public function store(Request $request){
        $dados = $request->except('_token');
        $dados['Status'] = 1;
        $mensagens = [
            'NomeFantasia.required'         => 'O campo NOME FANTASIA é obrigatório.',
            'NomeFantasia.min'              => 'O NOME FANTASIA não deve ter menos que 3 caracteres',
            'NomeFantasia.max'              => 'O NOME FANTASIA não deve exceder 100 caracteres',
            'RazaoSocial.required'          => 'O campo Razao Social é obrigatório.',
            'RazaoSocial.min'               => 'A Razão Social não deve ter menos que 3 caracteres',
            'RazaoSocial.max'               => 'A Razão Social não deve exceder 100 caracteres',
            'CNPJ.required'                 => 'O campo CNPJ é obrigatório.',
            'Logradouro.min'                => 'O LOGRADOURO não deve ter menos que 3 caracteres',
            'Complemento.min'               => 'O COMPLEMENTO não deve ter menos que 3 caracteres',
            'Telefone.required'             => 'O campo TELEFONE é obrigatório.',
            'Numero.numeric'                => 'O campo NUMERO deve conter somente numeros.',
            'Bairro.min'                    => 'O BAIRRO não deve ter menos que 3 caracteres',
            'Cep.required'                  => 'O CEP é obrigatório.'
        ];

        $this->validate($request, $this->empresa->regras, $mensagens);
        $this->validate($request, 
                ['cnpj' => 'formato_cnpj|cnpj']

            );

        $insert = $this->empresa->create($dados);
        // dd($insert->EmpresaId);
        DB::table('EmpresaUsuario')->insert([
            'EmpresaId'     => $insert->EmpresaId,
            'UsuarioId'     => Auth::user()->UsuarioId,
            'Proprietario'  => 1
        ]);
        if($insert)
            return redirect()->route('empresa.definir_cnaes', $insert->EmpresaId);
        else
            return redirect()->back();

    }

Defining your own validation rules Model, example:

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Empresa extends Model
{
    protected $primaryKey = 'EmpresaId';
    protected $table = 'empresa';
    protected $fillable = [
        'NomeFantasia', 'RazaoSocial', 'CNPJ', 'InscEstadual', 'InscMunicipal', 'IEST', 'CRT', 'TpEndereco',
        'Logradouro', 'Complemento', 'Numero', 'Bairro', 'Estado', 'Cidade', 'Cep', 'Telefone', 'Site', 'Status'
    ];
    public $regras = [
        'NomeFantasia'  => 'required|min:3|max:100',
        'RazaoSocial'   => 'required|min:3|max:100',
        'CNPJ'          => 'required',
        'Cep'       => 'required',
        'Logradouro'    => 'min:3',
        'Complemento'   => 'min:3',
        'Numero'        => 'numeric',
        'Bairro'        => 'min:3',
        'Telefone'      => 'required',
    ];
}

Index take a look at DOCUMENTATION OF THE VALIDITY OF THE LARAVEL

Browser other questions tagged

You are not signed in. Login or sign up in order to post.