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

CakePHP。“不工作”;on=>;创建;,cakephp,cakephp-model,Cakephp,Cakephp Model,我设置了规则“isUnique”,并为“on”选项设置了“create”值 完整代码: 'username' => array( 'notempty' => array( 'rule' => array('notempty'), 'message' => 'Empty field', 'required' => true, ), 'between' =>

我设置了规则“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,
     )
  )
但是,当我尝试登录时,会收到错误消息。为什么?


cakephp2.2.1

原因是您设置了
'required'=>true
,这要求验证时密钥必须存在。这与
'on'
键冲突,如下所述:

相反,只有在创建时才需要它

'unique' => array(
    'rule' => 'isUnique',
    'on' => 'create',
    'message' => 'Такой никнейм уже занят',
    'required' => 'create', // change this to 'create'
 )

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


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

您是否在没有“开启”的情况下收到错误?编辑您的问题并在其中添加更多代码。放置AppController、UsersController(或您的登录和注册位置)、模型和视图。:)“required”键表示字段为required,而“on”键表示要应用的规则。所以他们是两个不同的东西!是的,现在我正在使用自定义函数来检查这类字段。我刚刚遇到了类似的问题,没有找到一个好的解决方案,所以在做了一些研究之后,我把我的问题贴在了这里