我正在尝试进行电子邮件验证,其中电子邮件的域名为@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;
}
答案 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()
中传递$ thisif($ 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')**
),