2011-10-14 3 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 계정을 사용하는 경우에도 때조차 오류 메시지가 계속 ... 내가 잘못 뭐하는 거지 : 이것은 내가합니다 ('var에 $의 검증 = 배열의 섹션을) 가지고 무엇인가 ?

답변

0

케이크의 훌륭한 디버깅 도구를 사용하려고 했습니까? 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'; 
} 
관련 문제