cakephp在模型中没有散列密码

时间:2012-01-26 21:39:30

标签: php cakephp

在cakephp 2中,我有一个表单,可以在公司和用户表中创建新记录。

我的问题是它保存到两个表中但在Umuser表中它不会散列密码或id密钥。它似乎根本不会调用任何Umuser模型。这是一个保存之前,它没有调用它。

public function beforeSave() {
    if (isset($this->data[$this->alias]['password'])) {
        $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
    }
    return true;
}

Umuser位于puging / Usermin / Models目录中。

公司控制器保存数据:

public function add() {
    if ($this->request->is('post')) {
        $this->Company->create();

        if ($this->Company->saveAll($this->request->data, array('validate'=>'first'))) {  // Should ensure both sets of model data get validated
            $this->Session->setFlash(__('The company has been saved'));
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The company could not be saved. Please, try again.'));
        }
    }
}

不明白为什么它会保存数据但绕过Umuser模型来执行此操作。

1 个答案:

答案 0 :(得分:1)

$ this-> data [$ this-> alias] ['password'])这里可能有问题。 尝试做这样的事情:

public function beforeSave() {
if (isset($this->data[$this->alias]['password'])) {
    $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
    return true;
}else{
    return false; // if $this->data[$this->alias]['password'] is not set, don't save the model
}

}

如果公司已保存,则在此处发布