【问题标题】:Codeigniter form validation doesn't show errorsCodeigniter 表单验证不显示错误
【发布时间】:2016-06-27 18:16:01
【问题描述】:

我有一个问题,我的 codeigniter 没有显示错误消息。

当我对$this->form_validation->run() 执行var_dump 时,如果一切都已完成,则返回true,否则返回false。

代码如下:

控制器

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;
    }

}

查看

  <?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();
                    ?>

显然没问题,但我找不到错误。如果表单填写完成并且注册用户,则会被重定向到主页,如果没有返回登录屏幕,但不会显示错误。

你能帮帮我吗?

【问题讨论】:

  • 为什么在第二个 IF 语句中有两个重定向?另外,最后一个 load->view('index_view', $dados);。不应该是$data 而不是$dados
  • 是的,是 $data 而不是 $dados。

标签: php html forms codeigniter validation


【解决方案1】:

更改此为(最佳实践

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

这个

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

由于您还没有告诉表单验证类验证任何内容,它默认返回 FALSE(布尔值 false)。 The run() 方法仅在成功应用您的规则且没有任何失败的情况下返回 TRUE。

Check Why


在控制器中添加这个

$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>');

删除此

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


将其添加到相应输入字段下方的表单中

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

或者添加

<?php echo validation_errors(); ?>

Check Why


CodeIgniter Form Validation Example

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-18
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 2013-09-05
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多