簡體   English   中英

在cakephp中檢查“ isUniqueUsername”似乎不起作用?

[英]Checking for 'isUniqueUsername' in cakephp doesn't seem to work?

我有一個注冊表,當用戶注冊時,它會詢問他們的用戶名,密碼和電子郵件。 對於用戶名,我有一些規則,例如:

  • 必須為5至12個字符
  • 必須是唯一的
  • 必須僅使用字母,數字和破折號

話雖這么說,我似乎無法讓我的表格捕捉重復的用戶名,我希望有人可以幫助我解決這個問題!

這是我的User.php模型的Validate:

public $validate = array(
        'username' => array(
            'nonEmpty' => array(
                'rule' => array('notEmpty'),
                'message' => 'A username is required',
                'allowEmpty' => false
            ),
            'between' => array( 
                'rule' => array('between', 5, 15), 
                'required' => true, 
                'message' => 'Usernames must be between 5 to 15 characters'
            ),
             'unique' => array(
                'rule'    => array('isUniqueUsername'),
                'message' => 'This username is already in use'
            )
        )
);

為了示例,我刪除了第三條規則(alpha /數字/破折號)

接下來是我的功能,用於檢查數據庫中的用戶名:

function isUniqueUsername($check) {


$username = $this->find(
    'all',
    array(
        'fields' => array(
            'User.id',
            'User.username'
        ),
        'conditions' => array(
            'User.username' => $check['username']
        )
    )
);

if(!empty($username)){
    if($this->data[$this->alias]['id'] == $username['']['id']){
        return true; 
    }else{
        return false; 
    }
}else{
    return true; 
}

}

這是“注冊”的控制器功能

public function register() {
        if ($this->request->is('post')) {

            $this->User->create();
            if ($this->User->save($this->request->data)) {
                $this->Session->setFlash(__('The user has been created'));
                $this->redirect($this->Auth->redirect());
            } else {
                $this->Session->setFlash(__('The user could not be created. Please, try again.'));
            }   
        }
    }

更改

'unique' => array(
    'rule'    => array('isUniqueUsername'),
    'message' => 'This username is already in use'
 )

 'unique' => array(
     'rule' => 'isUnique',
     'message' => 'This username is already in use'
 )

您不需要該功能來檢查唯一性,Cake用魔術為您做到這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM