加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

Cakephp 2.1之前保存不起作用

发布时间:2020-12-13 16:44:44 所属栏目:PHP教程 来源:网络整理
导读:我有一个用户模型,一个UsersController和一个使用用户模型的AccountController(在创建帐户,登录,注销时使用帐户控制器). 一切正常,除了AccountController中的beforeSave函数.我正在尝试使用beforeSave来哈希我的密码,但它不起作用(密码在数据库中保存为un-ha
我有一个用户模型,一个UsersController和一个使用用户模型的AccountController(在创建帐户,登录,注销时使用帐户控制器).

一切正常,除了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来散列密码)
>即使我返回虚假;保存功能仍然执行(我认为不应该这样
>调用debug($this-> request-> data)什么也没给我
>我在UsersController中添加了相同的beforeSave函数,但它也没有工作

我认为在我的情况下,之前保存没有被调用,我只是无法弄清楚为什么.

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

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

解决方法

beforeSave是 Model callback,所以在你的模型中定义它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读