我有以下自定义功能,用于检查电子邮件是否有gmail.com帐户...
function check_email($mail) {
list($user, $domain) = explode('@', $mail);
if ($domain !== 'gmail.com' ){
return false;
} else{
return true;
} }
在我的模型上,我想检查它是否返回true,如果没有,它会给出错误信息。这就是我得到的('var $ validate = array的一部分):
'email' => array(
'emailvalid' => array('check_email' => 'email',
'message' => 'Not a valid email address')
)
即使我使用gmail.com帐户,我也会收到错误消息......我做错了什么?
答案 0 :(得分:1)
您似乎缺少$ validate数组中的规则字段。此外,传递给验证方法的值实际上是一个数组,而不是一个字符串。查看自定义验证规则here的语法。
尝试这样的事情:
var $validate = array(
'email' => array(
'rule' => array('checkEmail'),
'message' => 'Not a valid email address.'
)
);
function checkEmail($value) {
list($user, $domain) = explode('@', $value['email'], 2);
return $domain === 'gmail.com';
}
答案 1 :(得分:0)
在你的情况下,$ mail将包含一个数组,因此不适合直接比较
所以它应该更像是
function check_email($data) {
$mail = array_shift($data);
....
}
你的验证数组对我来说也很奇怪。请参阅有关如何正确设置自定义规则的食谱。