我有一个用 cakephp 开发的坐席,我有一个编辑用户的页面。
我的用户表有很多字段,其中之一是 md5 中的密码。
用户可以修改其所有字段和密码,但如果他将此字段留空,我将无法从数据库中获取旧密码并保存。
但是在密码字段上保存时返回错误。
这是我对控制器的操作:
if ($this->request->is ('post')){
$this->User->id = $this->request->data['User']['id'];
if($this->request->data['User']['password'] == ''){
$user = $this->User->find('first',array('conditions'=>array('User.id' => $this->request->data['User']['id'])));
$this->request->data['User']['password'] = md5($user['User']['password']);
$this->request->data['User']['password_confirm'] = md5($user['User']['password']);
}
if ($this->User->save($this->request->data)) {
$this->redirect (array ('action'=>'index'));
}
else{
debug($this->User->validationErrors);
$this->Session->write('flash_element','error');
$this->Session->setFlash ('Errore di salvataggio dello user.');
}
}
这是 beforeSave 到 UserModel 中的方法:
public function beforeSave(){
if (isset($this->data['User']['password'])){
$this->data['User']['password'] = AuthComponent::password($this->data['User']['password']);
}
}
问题是当我尝试保存字段密码时返回错误是不合适的类型。如果我在保存之前打印字段密码,我会看到类似的内容:*****
但如果我打印变量,则md5($user['User']['password'])
返回正确的密码加密值。
谢谢