编码器的表单验证没有显示错误消息


Form Validation of codeigniter is not showing error message

我正在做一个项目,我使用codeigniter表单验证,但有一个问题,我把检查验证与一个if,但我的错误信息没有出现在视图中,因为它应该。

下面的代码:

Ci控制器

    public function envia(){
        $this->form_validation->set_rules('nome', 'nome', 'required');
        $this->form_validation->set_rules('descricao', 'descricao', 'required');
        $this->form_validation->set_rules('preco', 'preco', 'required');
        if ($this->form_validation->run() == TRUE){
            $produtos = array(
            "nome"  => $this->input->post("nome"),
            "descricao" => $this->input->post("descricao"),
            "preco" => $this->input->post("preco"),
             ); 
            $this->load->model("produtos_model");
            $this->produtos_model->salva($produtos);
            redirect('/produtos/');
        }else{
            redirect('/produtos/novo');
        }   
    }
视图

    <div class="container">
        <div class="row">
            <?php echo validation_errors(); ?>
            <h2>Cadastro</h2>
            <?php echo form_open('produtos/envia');?>
            <div class="form-group">
            <?php
            echo form_label("Nome:", "nome");
            echo form_input(array(
                "name"  => "nome",
                "id"    => "nome",
                "class" => "form-control"
            ));
            ?> 
            </div>
            <div class="form-group">
            <?php
            echo form_label("Descricao:", "descricao");
            echo form_input(array(
                "name"  => "descricao",
                "id"    => "descricao",
                "class" => "form-control"
            )); 
            ?>
            </div>
            <div class="form-group">
            <?php
            echo form_label("Preço:", "preco");
            echo form_input(array(
                "name"  => "preco",
                "id"    => "preco",
                "class" => "form-control"
            ));
            ?>
            </div>          
            <div class="form-group">
            <?php
            echo form_submit(array(
                "class"   => "btn btn-primary",
                "value" => "Cadastrar"
            )); 
            ?>
            </div>
            <?php echo form_close();?>

感谢大家的关注。

在else部分不要使用重定向,因为重定向重新加载页面,这就是为什么你不能得到验证消息。使用那里的$this->load->view('your_view')

public function envia(){
            $this->form_validation->set_rules('nome', 'nome', 'required');
            $this->form_validation->set_rules('descricao', 'descricao', 'required');
            $this->form_validation->set_rules('preco', 'preco', 'required');
            if ($this->form_validation->run() == TRUE){
                $produtos = array(
                "nome"  => $this->input->post("nome"),
                "descricao" => $this->input->post("descricao"),
                "preco" => $this->input->post("preco"),
                 ); 
                $this->load->model("produtos_model");
                $this->produtos_model->salva($produtos);
                redirect('/produtos/');
            }else{
                $this->load->view('your_view_where_is_your_form');
            }   
        }

你的代码应该像这样:

public function produtos()
{
    $status = $this->uri->segment(2); // Sample url: http://localhost/productos/success
    if(!empty($status) && $status = 'success')
    {
        $this->load->view('view_success');
    }else
    {
        $this->form_validation->set_rules('nome', 'nome', 'required');
        $this->form_validation->set_rules('descricao', 'descricao', 'required');
        $this->form_validation->set_rules('preco', 'preco', 'required');
        if ($this->form_validation->run() == TRUE){
            $produtos = array(
            "nome"  => $this->input->post("nome"),
           "descricao" => $this->input->post("descricao"),
           "preco" => $this->input->post("preco"),
         ); 
        $this->load->model("produtos_model");
        $this->produtos_model->salva($produtos);
        redirect('/produtos/success'); //Success
        }else{
           $this->load->view('view_form_input') // Your form was here
       }
     }

 }

**记住,为了得到错误验证,永远不要使用redirect函数。

仅在验证成功时使用redirect功能。