我正在尝试自动注册用户。您输入一个电子邮件地址并向用户发送密码。听起来很简单,对吧?以下是我在添加操作中尝试过的一些内容,但它们都不起作用(如所示)。如何在CakePHP中保存自动生成的密码?
if (!empty($this->data)) {
$this->User->create();
$random_pass = $this->Auth->password($this->generatePassword());
// Doesn't work:
$user_data['User'] = $this->data['User'];
$user_data['User']['password'] = $random_pass;
if ($this->User->save($user_data)) { /* ... */ }
// Doesn't work:
$this->User->set('password', $random_pass);
if ($this->User->save($this->data)) { /* ... */ }
// Doesn't work:
$this->data['User']['password'] = $random_pass;
if ($this->User->save($this->data)) { /* ... */ }
// Doesn't work:
$this->data['User'][0]['password'] = $random_pass;
if ($this->User->saveAll($this->data)) { /* ... */ }
}
根据Why is the CakePHP password field is empty when trying to access it using $this->data?这是因为Auth组件正在删除密码。看起来很普通,不是吗?那么我该如何解决它?
更多信息
我使用this function生成密码。添加视图只有三个字段,first_name,last_name和email(分配给Auth组件中的用户名字段)。
为什么不会在第一次尝试的工作?蛋糕不会删除密码。为什么当Auth组件只存储你的散列时,它会删除它。 – JohnP 2011-03-15 16:58:51
第一次执行失败时失败了什么?它保存了一个空白的密码,还是一个“错误的”密码? Auth组件不应该通过'Model :: save'调用来解决。 – 2011-03-15 17:03:08
@JohnP - 感谢您解决这个问题。可能是错误的信息。 @Daniel - 第一种方法导致密码为空。实际上,它们都会导致密码空白。 – dbme 2011-03-15 17:22:48