簡體   English   中英

Codeigniter的表單驗證未顯示錯誤消息

[英]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功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM