我試圖設置用戶註冊的驗證,但我有麻煩。當我只有有美元驗證數組中的電子郵件,角色和密碼字段(刪除其他人)它的作品,並會保存一個新的用戶。當我嘗試添加其他字段時,它會失敗並給出錯誤信息「用戶無法保存,請重試。」CakePHP - 密碼確認不允許用戶提交註冊
我很確定這是re_password檢查。當我刪除驗證它的作品。然而,re_password驗證程序會顯示一個錯誤,當密碼是不同的,所以我不知道去哪裏找
這裏是我的用戶表
id | email | password | location | website | role | created | modified
這裏的驗證要求。爲了讓它保存一個新用戶,我必須刪除除電子郵件,密碼和角色之外的所有內容。
public $validate = array(
'email' => 'email'
,
'password' => array(
'required' => array(
'rule' => array('minLength', '8'),
'message' => 'A password with a minimum length of 8 characters is required'
)
),
're_password' => array(
'required' => array(
'rule' => array('equalTo', 'password'),
'message' => 'Both password fields must be filled out'
)
),
'role' => array(
'valid' => array(
'rule' => array('inList', array('admin', 'author')),
'message' => 'Please enter a valid role',
'allowEmpty' => false
)
),
'location' => array(
'valid' => array(
'rule' => array('notEmpty'),
'message' => 'Please select a location'
)
)
);
這裏的形式(選項陣列的正上方,想通它沒有必要顯示)
echo $this->Form->input('email');
echo $this->Form->input('password');
echo $this->Form->input('re_password', array('type'=>'password', 'label'=>'Re-Enter Password', 'value'=>'', 'autocomplete'=>'off'));
echo $this->Form->input('location', array('options' => $options, 'label' => 'Select Nearest Location'));
echo $this->Form->input('website',array('label'=>'Enter your website, such as www.example.com. '));
echo $this->Form->input('role', array('type' => 'hidden', 'default' => 'user'));
這裏的re_password檢查在用戶模型函數
function check_user_password($userid) {
$salt = Configure::read('Security.salt');
$this->User->id = $userid;
$hashed_password = $this->User->field('password');
// check password
if($hashed_password == md5($data['User']['re_password'].$salt)) {
return true;
} else {
return false;
}
}
最後,這裏是用戶控制器中的添加功能
public function add() {
if ($this->request->is('post')) {
$this->User->create(); //create initiates a form on User/add.ctp
if ($this->User->save($this->request->data)) { //save the form data
$this->Session->setFlash(__('The user has been saved'));
$this->redirect(array('controller' => 'demos', 'action' => 'index'));
} else {
$this->Session->setFlash(__('The user could not be saved. Please, try again.'));
}
}
}
請讓我知道是否有其他任何你需要看到
仍然不會保存。我會檢查你今天晚些時候提出的調試。感謝您的提示 – user2268281 2013-04-24 10:24:21
不客氣。不過,我剛剛意識到,您將** user **設置爲_role_隱藏輸入的默認值,但您正嘗試使用array('admin','author')'來驗證它。 – 2013-04-24 11:46:34
謝謝,就是這樣!當我使用簡潔的調試技巧時,您只是向我展示了它描述了您指出的aadmin/author錯誤。 – user2268281 2013-04-24 20:43:38