codeigniter的表单验证未显示错误消息

时间:2016-10-14 02:16:00

标签: php codeigniter validation

我正在做一个项目我正在使用codeigniter表单验证,但是有一个问题,我将检查验证用if,但我的错误消息没有出现在视图中。 / p>

以下代码:

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();?>

我很感激关注。

2 个答案:

答案 0 :(得分:2)

在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');
            }   

        }

答案 1 :(得分:0)

您的代码应该是这样的:

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功能。