【问题标题】:Codeigniter form validation is not showing errorsCodeigniter 表单验证未显示错误
【发布时间】:2014-02-20 00:45:21
【问题描述】:

我是 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>

任何想法为什么错误不会显示在表单上方?

【问题讨论】:

    标签: php forms codeigniter validation


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多