【问题标题】:Can't display Codeigniter validation error无法显示 Codeigniter 验证错误
【发布时间】:2017-01-25 01:54:18
【问题描述】:

不要明白这个。 我必须验证基本形式。我使用 CI form_validation 库,表单验证规则设置为“必需”...如果表单验证失败,它只需要在登录表单中回显验证错误。我默认使用<?php echo validation_errors(); ?> Helper 是自动加载的。表单功能还可以,它应该如何工作,唯一的问题是如果不填写必填字段,框架不会显示错误消息?

login_form.php - 查看

<?php echo validation_errors(); ?> 

<?php echo form_input('email' , 'email'); ?> <br>
<?php echo form_input('password' , 'password'); ?> <br>
<?php echo form_submit('submit' , 'submit'); ?>

login.php - 控制器

<?php
Class Login extends CI_Controller {

  function index () {
    $data ['content'] = "login_form";
    $this->load->view("template", $data);
  }

  function validate() {
    $this->load->library("form_validation");


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

    if( $this->form_validation->run() == FALSE) {
        redirect('login/index');
    }
    else {
        redirect("user/profile");
    }
  }

}
?>

【问题讨论】:

  • 能否粘贴您的控制器并查看
  • redirect('登录/索引');不要使用重定向加载您的视图
  • 这里是完整的代码。
  • 或者您可以尝试您的代码,只需注释掉 redirect('login/index');并放置 如果有任何错误,您将看到错误
  • 它不是视图,它是另一个加载配置文件视图的控制器和方法......所以它不是错误。

标签: php forms codeigniter validation


【解决方案1】:

你为什么不在控制器中使用这样的代码希望能帮助你将表单操作设置为 login.php login.php - 控制器

function index () {
    $data ['content'] = "login_form";
    $this->load->library("form_validation");
    $this->form_validation->set_rules('email' , 'email' , 'trim|xss_clean|required');
    $this->form_validation->set_rules('password' , 'password' , 'md5|trim|required');
    if( $this->form_validation->run() == FALSE) {
          $this->load->view("template", $data);
    }
    else {
        redirect("user/profile");
     }  
}

login_form.php - 查看

<?php echo validation_errors(); ?> 

<?php echo form_input('email' , 'email'); ?> <br>
<?php echo form_input('password' , 'password'); ?> <br>
<?php echo form_submit('submit' , 'submit'); ?>

【讨论】:

  • @goran,注意不是重定向,而是重新加载页面视图。当您重定向时,当前页面中的所有数据都将丢失——包括form_validation 类及其所有数据。仔细查看form validation documentation 示例。你会看到它以同样的方式完成。以上是正确答案。
  • @Farhan 通常只是 == 而不是 === 在运行部分
【解决方案2】:
if( $this->form_validation->run() == FALSE) {
    redirect('login/index');
}

不要重定向,否则错误将不可用。而不是那个保持

if( $this->form_validation->run() == FALSE) {
    $data ['content'] = "login_form";
    $this->load->view("template", $data);
}    

查看以下链接了解更多详情:
Form Validation : CodeIgniter User Guide

【讨论】:

    猜你喜欢
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-13
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    相关资源
    最近更新 更多