请求解释vtiger.entity.beforesave系列三类事件的差异
Vtiger 三个BeforeSave相关事件的差异解析
vtiger.entity.beforesave
- 这是保存流程启动后的第一个前置事件,触发于实体数据还未进入任何系统校验或修改限制逻辑时。
- 你可以在这里对任意字段的值做修改,也能执行自定义业务逻辑判断——比如根据关联字段值调整当前字段,甚至通过抛出异常直接中断整个保存流程。
- 此阶段没有字段修改权限的限制,只要代码逻辑允许,就能修改所有字段。
vtiger.entity.beforesave.modifiable
- 触发时机晚于
vtiger.entity.beforesave,是系统完成「字段可修改性校验」(比如用户权限、字段锁定状态)之后的事件。 - 仅允许修改那些被系统判定为「当前用户可编辑」的字段,若尝试修改不可修改的字段,修改操作会被直接忽略。
- 适合在确保字段可编辑的前提下,做针对性的字段值调整,避免做无用的修改操作。
vtiger.entity.beforesave.final
- 这是保存前的最后一个事件,触发于所有前置校验、修改逻辑执行完毕,数据即将写入数据库的瞬间。
- 绝对禁止修改任何字段值,此阶段只能做非修改类操作:比如最终的合规性校验、记录保存前的状态日志、触发后续异步任务等。任何字段修改请求都会被系统忽略。
- 核心作用是保障数据写入前的最终准确性,做最后一道流程校验。
核心差异对比
| 事件名称 | 触发阶段 | 字段修改权限 | 典型应用场景 |
|---|---|---|---|
vtiger.entity.beforesave | 保存流程最早期 | 无限制,可改所有字段 | 自由调整字段、业务逻辑拦截、中断保存 |
vtiger.entity.beforesave.modifiable | 字段可修改校验完成后 | 仅能修改可编辑字段 | 针对性调整可编辑字段的内容 |
vtiger.entity.beforesave.final | 即将写入数据库前 | 禁止修改任何字段 | 最终校验、保存日志记录 |
内容的提问来源于stack exchange,提问作者psauleda
相关产品推荐
相关产品推荐

