【发布时间】: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
【问题讨论】: