通过检查对象在保存前后的差异,我在 processForm 函数中记录应用程序中对象的更改。我将其保存到数据库中的日志表中。
对于 sfGuardUser 后端,我使用生成的管理员,它会自动保存对嵌入式组或权限所做的更改。
我想记录这些更改 - 但我可以在哪里添加我的日志进程?
通过检查对象在保存前后的差异,我在 processForm 函数中记录应用程序中对象的更改。我将其保存到数据库中的日志表中。
对于 sfGuardUser 后端,我使用生成的管理员,它会自动保存对嵌入式组或权限所做的更改。
我想记录这些更改 - 但我可以在哪里添加我的日志进程?
好吧,我认为处理此类更改的最佳位置是在模型中而不是在 processForm 中。这是行为的完美工作。
有一种称为versionable的行为,它与您所做的完全一样:对模型的每个更改进行历史记录,您只需在 schema.yml 中定义它:
BlogPost:
_propel_behaviors:
versionable:
log_created_at: true
log_created_by: true
log_comment: true
columns:
title: string(255)
body: clob
所以也许你可以从这种行为中获得灵感来创造你自己的。然后你只需要修改 sfGuard 的schema.yml,比如:
sfGuardGroupPermission:
_attributes: { phpName: sfGuardGroupPermission }
_propel_behaviors:
versionable: { log_created_at: true, log_created_by: true, log_comment: true }
编辑: 切换到推进。