我设置规则'isUnique'并为'on'选项设置'create'值。
完整代码:
'username' => array(
'notempty' => array(
'rule' => array('notempty'),
'message' => 'Empty field',
'required' => true,
),
'between' => array(
'rule' => array('between',3,25),
'message' => 'Too long value'
),
'unique' => array(
'rule' => 'isUnique',
'on' => 'create',
'message' => 'Already taken',
'required' => true,
)
)
但是当我尝试登录时,我收到错误消息。为什么?
CakePHP 2.2.1
答案 0 :(得分:0)
原因是您设置了'required' => true
,这需要在验证时出现密钥。这与'on'
密钥冲突,如下所述:http://book.cakephp.org/2.0/en/models/data-validation.html#one-rule-per-field
相反,只有在创建时才需要它。
'unique' => array(
'rule' => 'isUnique',
'on' => 'create',
'message' => 'Такой никнейм уже занят',
'required' => 'create', // change this to 'create'
)
答案 1 :(得分:0)
问题是,当你尝试登录时,CakePHP认为你正在创建一个新记录(CakePHP将它识别为新记录,因为你没有提供项目的ID,就像你在编辑时一样项)。
解决方案可能是创建一个自定义验证功能,除了登录时,它会一直检查唯一的用户名。