du8791069 2016-06-27 18:16
浏览 52
已采纳

Codeigniter表单验证不显示错误

I have a problem, my codeigniter is not displaying error messages.

When I do a var_dump on $this->form_validation->run(), it returns true if everything is completed and false if not.

Here is the code:

Controller

defined('BASEPATH') OR exit('No direct script access allowed');

class Logon extends CI_Controller {
public function __construct() {
      parent::__construct();
      $this->load->model('logon_model', 'logon');
      }

public function autenthicate() {
        $this->form_validation->set_rules('usuario', 'Usuario', 'required');
        $this->form_validation->set_rules('senha', 'Senha', 'required');

        if ($this->form_validation->run() == TRUE):
            #Array with data
            $data = elements(array('user', 'password'), $this->input->post());
            $data['password'] = md5($data['password']);

            #Send data to model
            if ($this->logon->do_login($data)->result()):

                $data = $this->logon->do_login($data)->result();

                $user_data = array(
                    'id' => $data['id'],
                    'name' => $data['name'],
                    'logged' => TRUE
                );

                $this->session->set_userdata($user_data);
                redirect('sales');

                $this->session->set_flashdata('loginerror', 'Login failed! User or password is invalid.');
                redirect('logon');
            endif;
        else:
            $data = array(
                'title' => 'Logon',
                'screen' => 'index',
            );

            $this->load->view('index_view', $dados);
        endif;
    }

}

View

  <?php
                    echo form_open('logon/autenthicate');
                    echo '<div class="form-group">';
                    echo form_label("User");
                    echo form_input(array('name' => 'user', 'class' => 'form-control'));
                    echo '</div>';

                    echo '<div class="form-group">';
                    echo form_label("passwor");
                    echo form_password(array('name' => 'password', 'class' => 'form-control'));
                    echo '</div>';

                    echo '<div class="form-group">';
                    echo form_submit('logon', 'Logon', 'class="btn btn-default btn-block"');
                    echo '</div>';

                    #Show a alert div with validation errors
                    echo validation_errors('<div class="alert alert-danger alert-dismissible" role="alert">
  <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>', '</div>');
                    echo form_close();
                    ?>

Apparently it's all right, but I can not find the error. If the form is completed and the registered user, it will be redirected to the home page, if not back to the login screen, but without displaying the error.

Can you help me?

  • 写回答

1条回答 默认 最新

  • donglv7097 2016-06-27 18:25
    关注

    Change this to (Best Practices)

    if ($this->form_validation->run() == TRUE)
    

    this

    if ($this->form_validation->run() == FALSE)
    

    Since you haven’t told the Form Validation class to validate anything yet, it returns FALSE (boolean false) by default. The run() method only returns TRUE if it has successfully applied your rules without any of them failing.

    Check Why


    Add this in controller

    $this->form_validation->set_error_delimiters('<div class="alert alert-danger alert-dismissible" role="alert">
    <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>', '</div>');
    

    and remove this

    echo validation_errors('<div class="alert alert-danger alert-dismissible" role="alert">
      <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>', '</div>');
    

    Check Why


    Add this in form below the respective input fields

    echo form_error('usuario');
    echo form_error('senha'); 
    

    Or add

    <?php echo validation_errors(); ?>
    

    Check Why


    CodeIgniter Form Validation Example

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效