Validation_errors()未在视图中显示(CodeIgniter)

时间:2017-06-20 22:35:56

标签: php codeigniter codeigniter-3

我正在使用我的第一个CI应用程序,并且我遇到了库form_validation的问题。

验证和我的方法工作正常,除了我无法显示我的错误消息。正如手册所说,我试图单独展示它们,但没有奏效。试图使用echo validation_errors();显示它们,但错误消息在我的页面中是空白的。

所以我做了一个测试,把代码放在控制器中,然后才能工作!但它们显示在页面的开头。我使用了一些javascript来使它在视觉上更好(将它移动到我希望它显示的位置),但它并不美观。我尝试了CodeIgniter上的所有内容,但仍然没有得到好结果。拜托,有人可以帮我吗?

这是我的控制器 User.php

public function registrar() {
        $this->load->library('form_validation');
        $this->load->view('registrar');

        $this->form_validation->set_rules('name', 'Nome', 'trim|required|min_length[7]',
             array( 'required'      => '<br>- Por favor, insira seu nome.',
                    'min_length'    => '<br>- Por favor, insira seu nome completo.'));
        // ..... other rules


        if ($this->form_validation->run() == TRUE)
        {
            $password = $this->input->post('password');
            $password_hash = password_hash($password, PASSWORD_BCRYPT);

            $data = array(
                'name' => $this->input->post('name'),
                'email' => $this->input->post('email'),
                'password' => $password_hash
            );
            if ($this->user_model->insertUser($data))
            {
                $this->session->set_flashdata('error_msg','<p>Ok</p>');
                redirect('user/registrar');
            }
            else
            {
                $this->session->set_flashdata('error_msg','<p>Not ok</p>');
                redirect('user/registrar');
            }
        }
        else 
        {
            echo validation_errors('<div class="error">', '</div>'); //THIS LINE WORKS!!!
        }
    }

这是我的观点 registrar.php

<form action="" method="post" class="pure-form"> // using this only for css styling
            <?php echo validation_errors(); ?> // THIS LINE DOESN'T WORKS :(
            <?php echo form_open('user/registrar');?>
            <fieldset>
                <h1>Registrar</h1>
                <div class="pure-control-group group gr-2">
                    <label for="email">Nome:</label>
                    <input type="text" class="pure-input-1" id="name" name="name" placeholder="Nome" value="<?php echo set_value('name');?>">
                </div>
                // ....... everything else
            <input type="submit" class="pure-button pure-button-primary verde" value="Cadastrar" name="register_submit">
            </div>
         <?php echo form_close();?>
        </form>

1 个答案:

答案 0 :(得分:0)

您正在验证之前加载视图页面。这就是在registrar.php中没有显示validation_errors的原因。

$这 - &GT;负载&gt;查看( '注册商'); 在验证的其他条件或函数结束后添加此项。