我是 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
. 我想检查用户在输入用户表之前是否正确输入了他的密码,但我不知道该怎么做。我猜想在我的注册方法的某个地方我需要检查两个密码是否相同。
谢谢你的帮助。