Cakephp 2.1之前保存不起作用

时间:2012-04-14 10:18:22

标签: cakephp cakephp-2.1 before-save

我有一个用户模型,一个UsersController和一个帐户控制器使用用户模型(在创建帐户,登录,注销时使用帐户控制器)。

除了AccountController中的beforeSave函数外,一切正常。我正在尝试使用beforeSave来哈希我的密码,但它不起作用(密码在数据库中保存为un-hashed)。

public function beforeSave() {
    parent::beforeSave();   

    if (isset($this->request->data['User']['password'])) {
        $this->request->data['User']['password'] = sha1($this->request->data['User']['password']);
    }

    return true;
}

一些注意事项:

  • 我使用“sha1”来散列密码,因为我正在将旧系统转换为CakePHP(旧系统使用sha1来散列密码)
  • 即使我return false;仍然执行保存功能(我认为不应该这样)
  • 致电debug($this->request->data)不给我什么
  • 我在UsersController中添加了相同的beforeSave函数,但它不能正常工作

我认为在我的情况下 beforeSave 没有被调用,我只是想不通原因。


解决: beforeSave函数必须进入模型内部,这是我现在的beforeSave函数:

public function beforeSave($options = array()) {
        parent::beforeSave();
        $this->data['User']['password'] = sha1($this->data['User']['password']);
        return true;
    }

1 个答案:

答案 0 :(得分:3)

beforeSave是Model callback,因此请在模型中定义它。