【问题标题】:Codeigniter: Form validation is_unique error not showingCodeigniter:表单验证 is_unique 错误未显示
【发布时间】:2012-06-12 02:58:46
【问题描述】:

我正在使用以下行来检查我的添加用户表单以检查我的数据库中是否不存在电子邮件地址我感觉它工作正常但我无法收到任何错误消息。

$this->form_validation->set_rules('userEmail','E-Mail', 'required|valid_email|trim|max_length[99]|xss_clean|is_unique[users.email]');

在我看来,我有<?php echo validation_errors(); ?>

我的控制器格式如下:

if($this->form_validation->run() === TRUE)
        {
            $userData = array(
                'fName' => $this->input->post('userFirstName', TRUE),
                'lName' => $this->input->post('userLastName', TRUE),
                'email' => $this->input->post('userEmail', TRUE),
                'password' => sha1($this->input->post('userPassword', TRUE))
            );  

            $this->db->escape($userData);
            $this->user_model->addUser($userData);
        }

【问题讨论】:

  • 你的回调没有返回任何东西,它甚至没有执行数据库查询。

标签: php codeigniter validation


【解决方案1】:

我将控制器更改为以下内容:

$this->form_validation->set_rules('userEmail','E-Mail', 'required|valid_email|trim|max_length[99]|xss_clean|is_unique[users.email]');
        $this->form_validation->set_rules('userPassword','Password', 'required|trim|max_length[99]|xss_clean');

        if($this->form_validation->run() === TRUE)
            {
                $userData = array(
                    'fName' => $this->input->post('userFirstName', TRUE),
                    'lName' => $this->input->post('userLastName', TRUE),
                    'email' => $this->input->post('userEmail', TRUE),
                    'password' => sha1($this->input->post('userPassword', TRUE))
                );  

                $this->db->escape($userData);
                $this->user_model->addUser($userData);
            }

            $data['contentMangement'] = $this->options_model->systemOptions();
            $data['pageTitle'] = 'Add User';
            $this->load->view('_assets/header', $data);
            $this->load->view('addUser', $data);
            $this->load->view('_assets/footer');
    }

【讨论】:

    【解决方案2】:

    只需使用 is_unique 预定义的验证规则。传递电子邮件列的表名和列名。

    $this->form_validation->set_rules('userEmail','E-Mail', 'required|valid_email|trim|max_length[99]|xss_clean|is_unique[users.email]');
    

    【讨论】:

      【解决方案3】:

      我们必须为 is_unique 添加到 table name 以我的方式去体验。

      array(
                  'field' => 'email',
                  'label' => 'email',
                  'rules' => 'trim|required|valid_email|is_unique[users.email]',
                  'errors' => array('required'  => 'Please enter a %s.','valid_email' => 'Please enter a valid %s.','is_unique' => 'email already exist.')
              ),
      

      希望你能理解。

      【讨论】:

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