当我从注册表单中保存信息时,我对用户名和电子邮件字段(我粘贴了下面的规则)有一些验证规则。使用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