我正在嘗試自動註冊用戶。您輸入一個電子郵件地址並向用戶發送密碼。聽起來很簡單,對吧?以下是我在添加操作中嘗試過的一些內容,但它們都不起作用(如所示)。如何在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