2015-06-24 30 views
0

我正在开发CakePHP 3应用程序。CakePHP 3如何检测实体字段是否已更改

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

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

因此,我发现在当前版本中更改类型(在beforeSave/beforeUpdate上更新数据)需要适应访问器& mutators,如文档所述(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进行散列(如果填充的话)。如果未填充,则该字段保持不变。

目前,使用acessors和mutators方法,如果我把表单中的字段置空,实体会将此字段保存为空。

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

回答

0

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

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