用于配置文件中的表单验证的回调函数

时间:2015-09-29 03:22:56

标签: php codeigniter validation email-validation

我正在尝试进行电子邮件验证,其中电子邮件的域名为@abc123.com。我已将表单验证规则分隔到名为application/config的{​​{1}}文件夹中的另一个文件中。我的一条规则包含form_validation.php

我应该把功能放在哪里?在主控制器中或与callback_email_check文件一起,我的所有表单验证规则是什么?我尝试过这两个选项,但是在我显示错误消息的地方,我得到了一个输出form_validation.php

Unable to access an error message corresponding to your field name Email.(email_check)

form_validation.php

function email_check($email)
{
    if( strpos($email, '@abc123.com') !== FALSE ) return TRUE;

    $this->form_validation->set_message('email', 'Please use abc123 email only.');

    return FALSE;
}

3 个答案:

答案 0 :(得分:1)

在你的函数email_check上,set_message不正确,它应该与函数同名。

更改此

$this->form_validation->set_message('email', 'Please use abc123 email only.');

$this->form_validation->set_message('email_check', 'Please use abc123 email only.');

回拨http://www.codeigniter.com/userguide2/libraries/form_validation.html#callbacks

答案 1 :(得分:0)

我也面临同样的问题,这就是我如何解决它......

您可以将email_check功能放在同一个控制器中。如果你没有在回调中收到错误消息,那么在run()

中传递$ this

if($ this-> form_validation-> run($ this)){...}

并将控制器方法与规则组相关联 -

$ config = array(     'controller / method'=>阵列(...));

查看更多链接:[将控制器方法与规则组相关联] [1]

欢呼!!

答案 2 :(得分:0)

只需在配置中添加以下内容:

array(
      'field' => 'email',
      'label' => 'Email',
      'rules' => 'trim|required|valid_email|callback_email_check',
       **'errors' => array('email_check' => 'Your Error Message')**
),