Drupal站点Webform提交数据归档后自动清理功能实现咨询
Drupal Webform提交数据归档+清理实现方案
自动归档+原生purge联动方案(推荐)
Drupal 8及以上版本的Webform模块提供了前置删除钩子,可在原生purge触发删除前自动执行归档逻辑,不需要修改核心 purge 规则:
- 在你的自定义模块中实现
hook_webform_submission_predelete钩子,示例代码如下:
/** * Implements hook_webform_submission_predelete(). */ function your_custom_module_webform_submission_predelete(\Drupal\webform\Entity\WebformSubmission $submission) { // 提取全量提交数据 $submission_data = $submission->toArray(); // 归档逻辑可自定义,以下为写入自定义归档表示例 \Drupal::database()->insert('custom_webform_archive') ->fields([ 'submission_id' => $submission->id(), 'webform_machine_name' => $submission->getWebform()->id(), 'data' => serialize($submission_data), 'created_time' => $submission->getCreatedTime(), ]) ->execute(); // 若需归档为CSV文件,可调用WebformSubmissionExporter服务生成文件写入指定目录 }
- 配置原生purge规则:
- 进入对应Webform的管理页,依次点击「设置」→「提交」选项卡
- 找到提交清除规则区块,开启自动清除,按需设置提交保留时长、触发条件即可
- 后续purge规则触发删除提交前,会自动执行上述钩子完成归档
低代码方案(无需写自定义代码)
你可以直接安装Webform Archive贡献模块,模块默认实现了归档能力,会将符合purge条件的提交标记为归档状态存储,不会直接物理删除,你可以定期导出归档数据后再批量清空归档记录即可,支持和Webform原生purge规则无缝联动。
一次性手动归档清理操作
如果仅需要做单次批量归档清理,不需要自动触发:
- 进入对应Webform的「结果」管理页,批量选中需要清理的提交记录
- 选择下载操作,导出为CSV/Excel格式完成归档
- 再选择删除操作批量清理已归档的提交即可
内容的提问来源于stack exchange,提问作者Arthi
相关产品推荐
相关产品推荐

