Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Mensagem de erro não apresentada após usar o form_validation.

Bom dia Galera. estou com um problema com o form_validation do codeigniter. o problema é que ele valida, porém, não apresenta as mensagem de erro para o usuário. abaixo código da VIEW:

<body>
<div class="form-group">
 <label class="col-md-4 control-label" for="data"></label>  
  <div class="col-md-6">
  <center>
    <legend>Cadastrar Depósito</legend>
  </center>
<form role="form" method="post" class="formulario" action="<?= base_url("/index.php/Salvar") ?>" id="formulario_clientes">
<?php

        echo form_label("Data Depósito", "data");    
        echo form_input(array(
            "name" => "data",
            "id" => "data",
            "class" => "form-control input-md",
            "type" => "date"
        ));

        echo form_label("Banco", "banco");
        echo form_input(array(
            "name" => "banco",
            "id" => "banco",
            "class" => "form-control",
            "maxlength" => "50",
            "type" => "text"
        ));

        echo form_label("Valor", "valor");
        echo form_input(array(
            "name" => "valor",
            "id" => "valor",
            "class" => "form-control",
            "maxlength" => "255",
            "type" => "number"
        ));

        echo form_label("Nome Cliente", "nomeCliente");
        echo form_input(array(
            "name" => "nomeCliente",
            "id" => "nomeCliente",
            "class" => "form-control",
            "maxlength" => "255",
            "type" => "text"
        ));

        echo form_label("Referência", "referencia");
        echo form_input(array(
            "name" => "referencia",
            "id" => "referencia",
            "class" => "form-control",
            "maxlength" => "255",
            "type" => "text"
        ));

        echo form_label("Vendedor", "Vendedor");
        echo form_input(array(
            "name" => "vendedor",
            "id" => "vendedor",
            "class" => "form-control",
            "maxlength" => "255",
            "type" => "text"
        ));
?>

  <label for="vendedor">Filial</label>

    <select class="form-control input-md" name="filial" required="">
          <option name="filial" id="filial" value="1">ELETROTRAFO - MATRIZ</option>
          <option name="filial" id="filial" value="2">ELETROTRAFO - LONDRINA</option>
          <option name="filial" id="filial" value="3">ELETROTRAFO - TELEMACO</option>
          <option name="filial" id="filial" value="4">SUDOESTE</option>
          <option name="filial" id="filial" value="5">ELÉTRICA</option>
      </select>    
</div>
</div>
<div class="form-group">
  <label class="col-md-4 control-label" for="Cadastrar"></label>
  <div class="col-md-8">
    <br>
    <button id="Cadastrar" name="Cadastrar" class="btn btn-success" >Salvar</button>
    <a href="<?= base_url("/index.php") ?>">Cancelar</a>
  </div>
</div>
 </form>
</body>

Na tag FORM ele faz referencia a uma rota criada, por isso vai estar diferente do método do controller.

Abaixo método controller:

public function salva(){
        $this->output->enable_profiler(TRUE);
        $this->load->library('form_validation');
        $this->form_validation->set_rules('banco', 'Banco', 'required');
        $this->form_validation->set_rules('nomeCliente', 'Nome Cliente', 'required');
        $this->form_validation->set_error_delimiters("<p class='alert alert-danger', </p>");
        $sucesso = $this->form_validation->run();

        if($sucesso){

            $depositos = array(
                "data_deposito"  => $this->input->post("data"),
                "banco" => $this->input->post("banco"),
                "cliente" => $this->input->post("nomeCliente"),
                "valor" => $this->input->post("valor"),
                "referencia" => $this->input->post("referencia"),
                "vendedor" => $this->input->post("vendedor"),
                "id_filial_fk" => $this->input->post("filial"),
            );

            $this->load->model("Deposito/deposito_Model");
            $this->deposito_Model->adicionaDepositos($depositos);
            redirect(base_url("/index.php/Deposito"));    

        }else{
            $this->session->set_flashdata('message', 'Your cart is empty!');
            $this->load->view("cadastro");        
        }
    }
2 respostas
solução!

Oi Matheus, tudo bom?

Acho que está faltando algo para exibir os erros na sua view. Algo como:

<?php 
    echo validation_errors('<div class="error">', '</div>'); 
?>

Se você preferir, também pode mostrar os erros individualmente para cada campo, algo como:

<?php 
    echo form_error('seuCampo'); 
?>

Abraço e bons estudos!

Boa tarde. Funcionou era isso mesmo muito obrigado. :D

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software