【问题标题】:CakePHP 3 How to detect if an entity field is changedCakePHP 3 如何检测实体字段是否已更改
【发布时间】:2015-06-24 22:08:50
【问题描述】:

我正在开发一个 CakePHP 3 应用程序。

现在,我需要在保存实体之前使用 SHA1 加密一些数据。

我在表对象中尝试了 beforeSave() 回调,就像在 CakePHP 2.x 中一样,但它不起作用。

所以,我发现当前版本中的这种类型的更改(更新 beforeSave/beforeUpdate 上的数据)需要适应访问器和突变器,就像文档所说的 (http://book.cakephp.org/3.0/en/orm/entities.html#accessors-mutators)。

文档甚至有一个关于检查实体字段是否被修改的注释 (http://book.cakephp.org/3.0/en/orm/entities.html#checking-if-an-entity-has-been-modified) 但我不明白如何使用它。

我需要一些简单的逻辑,就像一个身份验证系统。

在保存之前,在用户模型中,responsible_card_password 字段必须使用 SHA1 进行散列,如果已填充。如果未填写,则该字段保持不变。

目前,使用访问器和修改器方法,如果我将表单上的字段留空,实体将此字段保存为空白。

我该如何解决这个问题?非常感谢全世界的 CakePHP 开发者! :-D

【问题讨论】:

    标签: cakephp entity


    【解决方案1】:

    您可以在实体表中添加代码以自动散列密码

    protected function _setPassword($password)
    {
        return (new DefaultPasswordHasher)->hash($password);
    }
    

    【讨论】:

      猜你喜欢
      • 2020-08-29
      • 2012-11-08
      • 1970-01-01
      • 1970-01-01
      • 2010-11-24
      • 2015-01-21
      • 1970-01-01
      • 2021-02-27
      相关资源
      最近更新 更多