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

その理由は'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 に答える
0

問題は、ログインしようとすると、CakePHP が新しいレコードを作成していると見なすことです (アイテムを編集するときのようにアイテムの ID を提供しないため、CakePHP はそれを新しいレコードとして識別します)。

解決策は、ログイン時以外は常に一意のユーザー名をチェックするカスタム検証関数を作成することです。

于 2015-03-21T18:00:56.787 に答える