CakePHP的。不工作“on =>创建”

时间:2012-07-26 12:41:45

标签: cakephp cakephp-appmodel

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

2 个答案:

答案 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,就像你在编辑时一样项)。

解决方案可能是创建一个自定义验证功能,除了登录时,它会一直检查唯一的用户名。