CakePHP - 模型(自定义电子邮件验证)

时间:2011-10-14 20:14:51

标签: validation cakephp

我有以下自定义功能,用于检查电子邮件是否有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帐户,我也会收到错误消息......我做错了什么?

2 个答案:

答案 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)

你尝试使用cake的优秀调试工具吗?像pr()或debug()或简单的print_r()? 然后你会在不到几秒的时间内发现这样一个简单的错误。

在你的情况下,$ mail将包含一个数组,因此不适合直接比较

所以它应该更像是

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

你的验证数组对我来说也很奇怪。请参阅有关如何正确设置自定义规则的食谱。

相关问题