2014-01-28 70 views
3

我是Codegniter的新手,所以对我来说很简单。我正在构建一个简单的登录表单,并且当登录凭证正确时,我已成功重定向到一个页面。但是,如果我提交一个空表单,我不会收到错误消息。我也在表单字段中使用set_value,并且代码标记不会重新填写表单提交后用户输入的内容。不知何故数据正在被清除。为清楚起见,我已经完成了一些事情。Codeigniter表单验证没有显示错误

  1. 自动加载form_validation库
  2. 自动加载形式辅助
  3. 回荡validation_errors以上形式

account.php(控制器)

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

    class Account extends CI_Controller { 

    public function __construct() 
    { 
     parent::__construct(); 
     $this->load->model('User_model', 'user'); 
    } 

    public function index() { 
     $this->load->view('home'); 
    } 

    public function validate() { 

     $this->form_validation->set_rules('username', 'username', 'xss_clean|required'); 
     $this->form_validation->set_rules('password', 'password', 'xss_clean|required|md5'); 

     $user_data = array(
     'username' => $this->input->post('username'), 
     'password' => MD5($this->input->post('password')) 
    ); 

     if ($this->form_validation->run() == FALSE) 
     { 
     $data['title'] = "Login Fool"; 
     $this->load->view('templates/header', $data); 
     $data['contents'] = $this->load->view('login_view', $data, TRUE); 
     $this->load->view('page', $data); 
     $this->load->view('templates/footer'); 
     } 
     else 
     { 
     $validated = $this->user->validate($user_data['username'], $user_data['password']); 
     if($validated){ 
      redirect(base_url() . 'account'); 
     } 
     else{ 
      $this->session->set_flashdata('LoginError', 'Sorry, your credentials are incorrect.'); 
      redirect(base_url() . 'account/login'); 
     } 

     } 

    } 

    public function login() { 

    $data['title'] = "Login Fool"; 
    $this->load->view('templates/header', $data); 
    $data['contents'] = $this->load->view('login_view', NULL, TRUE); 
    $this->load->view('page', $data); 
    $this->load->view('templates/footer'); 

    } 

} 

login_view.php(图)

<h1>Login Now</h1> 
<?php 
    if(validation_errors() != false) { 
    echo "<div id='errors'>" . validation_errors() . "</div>" ; 
    } 
?> 
<?= ($this->session->flashdata('LoginError')) ? '<p class="LoginError">' . $this->session->flashdata('LoginError') . '</p>' : NULL ?> 

<?php echo form_open('account/validate'); ?> 
    <label for="username">Username:</label> 
    <input type="text" size="20" id="username" name="username" value="<?php echo set_value('username'); ?>"/> 
    <br/> 
    <label for="password">Password:</label> 
    <input type="password" size="20" id="passowrd" name="password" value="<?php echo set_value('password'); ?>"/> 
    <br/> 
    <input type="submit" value="Login"/> 
</form> 

任何想法,为什么这些错误将不会显示上述表单?

回答

4

原来我的模型是罪魁祸首。它扩展了CI_Controller而不是CI_Model。感谢所有看过这个的人。此代码有效。