0

我设置了规则“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

4

2 回答 2

0

问题是,当您尝试登录时,CakePHP 认为您正在创建一个新记录(CakePHP 将其识别为新记录,因为您没有像编辑某些项目时那样提供该项目的 ID)。

解决方案可能是创建一个自定义验证功能,该功能将始终检查唯一用户名,除非在登录时。

于 2015-03-21T18:00:56.787 回答
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'
 )
于 2012-07-26T14:46:54.630 回答