Validation CakePHP-模型(自定义电子邮件验证)
我有以下自定义功能,检查电子邮件是否有gmail.com帐户Validation CakePHP-模型(自定义电子邮件验证),validation,cakephp,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=
function check_email($mail) {
list($user, $domain) = explode('@', $mail);
if ($domain !== 'gmail.com' ){
return false;
} else{
return true;
} }
在我的模型上,我想检查它是否返回true,如果不是,它将给出一条错误消息。这就是我得到的(var$validate=array的一部分):
即使我使用gmail.com帐户,也会不断收到错误消息。。。我做错了什么?您是否尝试使用cake的优秀调试工具?像pr()或debug()或简单的print_r()? 然后你会在不到几秒钟的时间里发现这样一个简单的错误 在您的情况下,$mail将包含一个数组,因此不适合直接比较 所以应该更像
function check_email($data) {
$mail = array_shift($data);
....
}
另外,我觉得你的验证数组有点奇怪。请参阅有关如何正确设置自定义规则的手册。您是否尝试使用cake的优秀调试工具?像pr()或debug()或简单的print_r()? 然后你会在不到几秒钟的时间里发现这样一个简单的错误 在您的情况下,$mail将包含一个数组,因此不适合直接比较 所以应该更像
function check_email($data) {
$mail = array_shift($data);
....
}
另外,我觉得你的验证数组有点奇怪。请参阅有关如何正确设置自定义规则的手册。您的$validate数组中似乎缺少规则字段。此外,传递给验证方法的值实际上是一个数组,而不是字符串。检查自定义验证规则的语法 试着这样做:
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';
}
看起来$validate数组中缺少规则字段。此外,传递给验证方法的值实际上是一个数组,而不是字符串。检查自定义验证规则的语法 试着这样做:
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';
}