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

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

报告相同问题?

悬赏问题

  • ¥15 想问问富文本拿到的html怎么转成docx的
  • ¥15 我看了您的文章,遇到了个问题。
  • ¥15 GitHubssh虚拟机连接不上
  • ¥15 装完kali之后下载Google输入法 重启电脑后出现以下状况 且退不出去 桌面消失 反复重启没用
  • ¥15 ESP-IDP-BLE配网连接wifi
  • ¥15 ue2.6.12版本用的若以,安装gojs,引入import * as go from 'gojs';报错
  • ¥15 服务器上的网站安装php5.6版本
  • ¥15 请大咖一起探索iptv 直播源的hls通过反向代理解密
  • ¥100 寻找技术员 云闪付tn转h5输入卡号付款的链接 重酬!
  • ¥100 科大讯飞语音唤醒词,unbuntu环境,报错