Проверка формы codeigniter не показывает сообщение об ошибке

#php #codeigniter #validation

#php #codeigniter #проверка

Вопрос:

Я делаю проект, в котором использую проверку формы 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();?>
 

Я ценю внимание.

Комментарии:

1. Вы должны перенаправить пользователя на страницу «produtos / novo», если его отправка не подтвердится?

2. Это похоже на полезную часть документации

3. вы должны загрузить представление вместо перенаправления, чтобы отобразить сообщение об ошибке

Ответ №1:

В разделе 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');
            }   

        }
 

Ответ №2:

Ваш код должен быть таким:

 public function produtos()
{
    $status = $this->uri->segment(2); // Sample url: http://localhost/productos/success

    if(!empty($status) amp;amp; $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 функцию только тогда, когда проверка прошла успешно.