2011-10-14 23 views
1

我有以下的自定义函数,来检查,如果电子邮件有一个gmail.com帐户...CakePHP的 - 模型(自定义电子邮件确认)

function check_email($mail) { 
list($user, $domain) = explode('@', $mail); 


if ($domain !== 'gmail.com'){ 
return false; 

} else{ 
    return true; 
    } } 

在我的模型,我想检查它返回true,如果没有,它会给出错误信息。这是我得到了(在“变量$验证=阵列的部分):

'email' => array(
      'emailvalid' => array('check_email' => 'email', 
     'message' => 'Not a valid email address') 
      ) 

我一直甚至还让错误消息时,甚至当我使用一个gmail.com帐户...什么我做错了?

回答

0

您是否尝试使用Cake的优秀调试工具?像pr()或debug()或简单的print_r()? 那么你会在几秒钟内发现这样一个简单的错误。

你的情况$邮件将包含一个阵列,因此不适合直接比较

所以它应该更像

function check_email($data) { 
    $mail = array_shift($data); 
    .... 
} 

也开始验证阵列似乎有点怪我。请参阅食谱介绍如何正确设置自定义规则。

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'; 
}