【发布时间】:2015-12-26 09:55:54
【问题描述】:
我正在尝试进行电子邮件验证,其中电子邮件的域为@abc123.com。我已将表单验证规则分离到 application/config 文件夹中名为 form_validation.php 的另一个文件中。我的规则之一是callback_email_check。
我应该把函数放在哪里?在主控制器中还是与我的所有表单验证规则所在的form_validation.php 文件一起?我已经尝试同时使用这两个选项,但是在显示错误消息的地方,我得到的输出是 Unable to access an error message corresponding to your field name Email.(email_check)。
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;
}
form_validation.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/* Form Validation Rules */
$config = array(
'login' => array(
array(
'field' => 'user_id',
'label' => 'User ID',
'rules' => 'trim|required'
),
array(
'field' => 'password',
'label' => 'Password',
'rules' => 'trim|required'
)
),
'sign_up' => array(
array(
'field' => 'user_id',
'label' => 'User ID',
'rules' => 'trim|required'
),
array(
'field' => 'name',
'label' => 'Name',
'rules' => 'trim|required'
),
array(
'field' => 'email',
'label' => 'Email',
'rules' => 'trim|required|valid_email|callback_email_check'
),
array(
'field' => 'department',
'label' => 'Department',
'rules' => 'trim|required'
),
array(
'field' => 'password',
'label' => 'Password',
'rules' => 'trim|required'
),
array(
'field' => 'cfm_password',
'label' => 'Re-type Password',
'rules' => 'trim|required|matches[password]'
)
),
'edit_profile' => array(
array(
'field' => 'new_password',
'label' => 'New Password',
'rules' => 'trim|required'
),
array(
'field' => 'retype_password',
'label' => 'Re-type Password',
'rules' => 'trim|required|matches[new_password]'
)
),
'forgot_password' => array(
array(
'field' => 'user_id',
'label' => 'User ID',
'rules' => 'trim|required'
),
array(
'field' => 'email',
'label' => 'Email',
'rules' => 'trim|required|valid_email|callback_email_check'
)
)
);
?>
【问题讨论】:
-
回调函数放置在表单验证中调用它们的同一控制器中。
-
@AnmolRaghuvanshi 我试过了,但它返回相同的错误。
-
你也会发布你的 set_rule 部分吗
-
@AnmolRaghuvanshi 那会忽略错误,我正在尝试设置规则以确保用户仅使用“@abc123.com”作为域。
-
@AnmolRaghuvanshi 已经尝试过了,就像我说它忽略了对域的检查,因为它总是
TRUE。
标签: php codeigniter validation email-validation