【问题标题】:valid_email not working along with callback function in codeignitervalid_email 不能与 codeigniter 中的回调函数一起使用
【发布时间】:2017-12-08 22:24:26
【问题描述】:

大家好,我在应用程序的 codeigniter 中使用了 form_validation 库。我正在制作密码检索功能。我已经制作了电子邮件的提交表格。现在,在电子邮件输入字段上,我想应用这些验证。

  1. 需要
  2. 有效电子邮件
  3. 检查电子邮件是否存在。

对于第三个,我使用回调函数来检查数据库,它工作正常。但是使用回调函数 valid_email 不起作用。这是我的控制器功能。

     public function password_retrieve()
    {
        if ($_SERVER['REQUEST_METHOD'] == 'POST') 
    {

        $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email|callback__email_exists');
        if ($this->form_validation->run() == false) {
            $this->load->view('login_header');
            $this->load->view('password_retrieve');
            $this->load->view('login_footer');
        } else {

        }
    } else {
        $this->load->view('login_header');
        $this->load->view('password_retrieve');
        $this->load->view('login_footer');
    }
    }

    function _email_exists($email)
    {
    $this->load->model('users_model');

    $result = $result = $this->users_model->check_email_is_exist($email);
    if (!$result) {
        $this->form_validation->set_message(__FUNCTION__, 'This %s address does not exist!');
        return false;
    } else {
        return true;
    }
    }

它应该检查valid_email而不是去回调函数。

换句话说,我想知道规则的顺序是什么。回调规则是否在 valid_email 之前运行?

【问题讨论】:

  • valid_email 是一个本地规则,所以没有理由它不应该工作......你在尝试什么电子邮件?
  • 我尝试使用测试,它直接说这不存在。忽略 valid_email 规则
  • 为什么函数名中有下划线_。只需将其删除并尝试。只是email_exists($email)
  • 试过了还是不成功。

标签: php codeigniter codeigniter-3


【解决方案1】:

通过搜索官方文档和git 存储库,我发现函数在codeigniter 中运行没有特定的顺序。这意味着$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email|callback__email_exists'); 在这种情况下,valid_email 将在callback__email_exists 之后运行。不存在首先运行trim,然后运行required,然后运行valid_email 的顺序。

所以我所做的是在我的 callback 函数中创建一个新函数,该函数在所需但在 check_email 之前运行。

回答这个问题,以便将来人们可以从中受益。干杯!

【讨论】:

    【解决方案2】:

    尝试删除“trim”并检查电子邮件是否存在,不要使用其他功能。但使用“is_unique[table_name.email]”。

    $this->form_validation->set_rules('email', 'Email', 'required|valid_email|is_unique[table_name.email]');
    

    【讨论】:

    • 我正在检查 is_unique 的反向。再次阅读我的问题。删除修剪也不起作用。
    • 我想检查是否不是唯一的。因为电子邮件已经在数据库中
    • 在html中输入email的类型设置为text还是email?
    • 设置为文字
    • 然后尝试设置为电子邮件并留下valid_email。
    猜你喜欢
    • 2012-02-26
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    相关资源
    最近更新 更多