2012-01-31 43 views
1

有麻煩,目前我遇到使用CakePHP的數據驗證的一些問題CakePHP的數據驗證

我試圖使用規則用「上」 =>「創造」的說法,但它沒有似乎工作。 我的目標是在創建用戶期間檢查,以檢查郵件是否不存在於我的數據庫中。

但是,當它是一個編輯,我不想檢查這一點,我的意思是,如果用戶不更改郵件,顯然這個郵件已經存在於數據庫中,但它以前是一樣的。 ..

所以我不想檢查郵件,並沒有改變。

'mail' => array(
       'valid_mail' => array(
        'rule'  => array('email', true), 
        'message' => 'Veuillez insérer un email valide.' 
       ), 
       'isUnique_mail' => array(
        'rule'  => 'isUnique', 
        'on'  => 'create', 
        'message' => 'Ce mail est déjà utilisé.' 
       ) 
      ) 

希望你們明白我的問題。你的問題的

回答

2

部分可能是你不指定需要使用$this->Model->id = $id所以,當你調用save(或saveAll)功能,它試圖插入一條記錄被保存記錄的ID。

isUnique驗證函數實際上會在更新時過濾掉當前記錄的ID(如果使用$this->Model->id設置的)。你可以在bottom of the function(2446行)看到。

就我個人而言,我會一直離開isUnique驗證,以防止用戶在註冊後將其電子郵件更改爲已存在的電子郵件。

+0

Thx很多老兄!這是因爲我沒有用我的表單發送ID! – Sindar 2012-01-31 20:43:32