我目前通过使用cakePHP数据验证遇到了一些问题。
我尝试使用带有参数'on'=>的规则'创造'但它似乎没有奏效。 我的目标是在创建用户期间检查,检查邮件是否已存在于我的数据库中。
但是当它是一个编辑时,我不想检查这个,我的意思是,如果用户不更改邮件,显然这个邮件已经存在于数据库中,但它与之前的相同。
所以我不想检查邮件是否没有被更改。
'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é.'
)
)
希望你们理解我的问题。
答案 0 :(得分:2)
您的部分问题可能是您没有指定需要使用$this->Model->id = $id
保存的记录的ID,因此当您调用save
(或saveAll
)函数时,它试图插入一条记录。
isUnique
验证函数实际上会在更新时过滤掉当前记录的ID(如果已使用$this->Model->id
设置)。您可以在bottom of the function(第2446行)中看到这一点。
就个人而言,我会一直保留isUnique
验证,以防止用户将电子邮件更改为已注册后已存在的电子邮件。