私は Cake が初めてで、それを学ぶためにアプリケーションを構築しています。ユーザー登録システムに問題があります。これまでのところ、これは私のUsers
コントローラーの登録コードです:
public function register() {
$this->set('title_for_layout', 'Register');
if ($this->request->is('post')) {
$this->User->create();
if ($this->User->save($this->request->data)) {
$this->Session->setFlash('The user has been saved');
$this->redirect(array('action' => 'register'));
} else {
$this->Session->setFlash('The user could not be saved. Please, try again.');
}
}
}
そして、私のUser
モデル内には、パスワードをハッシュする次のメソッドがあります。
public function beforeSave() {
if (isset($this->data[$this->alias]['password'])) {
$this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
}
return true;
}
users
これは機能します。ユーザーは、ユーザー名、電子メール、およびハッシュ化されたパスワードとともに、データベースのテーブルに追加されます。ただし、ユーザー名と電子メールが一意であることを確認するためのチェックは行われません。
私の限られた理解から、モデルにいくつかの検証ルールを追加User
して、ユーザー名と電子メールのフィールドがテーブルに入力される前に一意であることを確認する必要がありますか? 現時点では、次の検証ルールしかありません。
public $validate = array(
'username' => array(
'required' => array(
'rule' => array('notEmpty'),
'message' => 'A username is required'
)
),
'email' => array(
'required' => array(
'rule' => array('notEmpty'),
'message' => 'An email is required'
)
),
'password' => array(
'required' => array(
'rule' => array('notEmpty'),
'message' => 'A password is required'
)
)
);
また、私の登録フォームには というPassword (confirm)
フィールドがありますpasswordConf
。ユーザーテーブルに入力する前に、ユーザーがパスワードを正しく入力したかどうかを確認したいのですが、その方法がわかりません。私の登録方法のどこかで、2 つのパスワードが同じかどうかを確認する必要があると思います。
助けてくれてありがとう。