當我從註冊表單中保存信息時,我對用戶名和電子郵件字段(我粘貼了下面的規則)有一些驗證規則。使用saveAll()函數自動調用驗證。Cakephp isUnique驗證不在一個字段上觸發,但在另一個字段上工作
問題是,用戶名字段上的isUnique規則根本不起作用(不返回任何錯誤)。該領域的其他規則工作得很好,並且對電子郵件字段的唯一驗證也起作用。我似乎無法弄清楚爲什麼會發生這種情況,兩個規則基本相同。
var $validate = array(
'username' => array(
'isUnique' => array (
'rule' => 'isUnique',
'message' => 'This username already exists.'),
'custom' => array (
'rule' => array('custom', '/^[A-Za-z0-9,\.-_]*$/i'),
'message' => 'The username can only contain letters, numbers, _, - and .'),
'minLength' => array(
'rule' => VALID_NOT_EMPTY,
'message' => 'You must fill in the username.')
),
'email' => array(
'isUnique' => array (
'rule' => 'isUnique',
'message' => 'This email address already exists in our database.'),
'valid' => array (
'rule' => array('email', false),
'message' => 'Invalid email.'),
'minLength' => array(
'rule' => VALID_NOT_EMPTY,
'message' => 'You must fill in the email address.')
)
);
我敢肯定,爲了讓它知道這是獨一無二的,你需要設置你的模型文件中的主鍵,並且還通過了相同的領域被保存在您的文章數據。 – 2010-07-14 16:48:49
我已經將模型中的用戶名字段聲明爲主鍵,並且它與發佈數據中的字段相同,並且我已檢查過該字段的內容是否正確。 但我不確定它必須是主鍵。唯一的規則僅適用於電子郵件的文件,即使它不是主鍵。 – 2010-07-14 17:36:54
嘗試在''rule'=>'isUnique','後面加''allowEmpty'=> false,'或''required'=> true,'。 – bancer 2010-07-15 01:07:46