2011-12-03 14 views
0

ユーザの電子メールがシステムに存在するかどうかをチェックするために書かれた検証関数をいくつか出しました。CakePHP検証ルールエラー

私は次のエラーを取得しています

お知らせ(8):これは、原因となるコードである0 [CORE /ケーキ/ libsに/モデル/ model.php、ライン1122]

:オフセット不定エラー

'email' => array(
      'emailRule-1' => array(
       'rule' => 'email', 
       'message' => 'email format is incorrect', 
       'last' => true 
      ), 
      'emailRule-2' => array(
       'rule' => 'checkEmailExist', 
       'message' => 'email already exists in the system' 
      ) 
     ), 

そして、ルール2は、エラーの原因であると思われ、ここではルール2である:

function checkEmailExist($emailAddress, $user_id){ 
     $this->recursive = -1; 
     if($user_id > 0){ 
      $user = $this->read(array('email'), $user_id); 

      if($emailAddress == $user['User']['email']) 
       return true; 
     } 


     $result = $this->find('count', array('conditions' => array('User.email' => $emailAddress))); 
     return $result > 0 ? false : true; 
    } 

答えて

1

どうしてこのようにしないのですか?

public $validate = array(
    'email' => array(
     'rule' => array('email', 'isUnique') 
    ) 
); 

独自のエラーメッセージを適用するには、2つの別々のルールに分割することをおすすめしますが、うまくいくはずです。

0

$ emailAddressに含まれているものをデバッグしようとしましたか? 私は、これはあなたがそう覚え

最初の子要素を取得する必要があり、アレイ^^

function checkEmailExist($emailAddress, $user_id){ 
    $this->recursive = -1; 
    $email = array_shift(emailAddress); 
    ... 

で賭ける:常に良いアイデアが最初にあなたの変数をデバッグするためのデバッグ()またはPR()を使用します。