cyberwoven / webform_queued_post_handler
此模块扩展了Webform模块的远程提交Web表单处理器插件,使用Drupal队列API使远程提交异步。
Requires
- php: >=7.4
- drupal/core: ^9.0 || ^10.0
This package is auto-updated.
Last update: 2024-09-23 23:06:53 UTC
README
此模块扩展了Webform模块的远程提交Web表单处理器插件,使用Drupal队列API使远程提交异步。它仅对“完成”的URL进行排队。“更新”和“删除”的URL将像正常一样运行。
设置
只需启用模块,一个名为“异步远程提交”的新处理器应该会在Web表单的“电子邮件/处理器”部分中可用。提交Web表单后,排队的项应该出现在队列表中,并且将在下一次cron运行时进行处理。
注意
测试/调试
要测试完成/更新/删除的URL,如果您启用“Webform Remote Post Example”模块,以下URL将可用
您可以使用隐藏字段作为“确认令牌”来存储远程响应数据中的确认令牌。令牌的格式为[webform:handler:<handler_id>:<state>:<key>]
* `handler_id`: The handler id (eg: async_remote_post, async_remote_post_2...)
* `state`: completed/updated/deleted
* `key`: The key of whatever value you want in the response. I think it assumes a JSON response, but not sure.
例如 [webform:handler:async_remote_post:completed:confirmation_number]
将替换为从“完成URL”响应中获取的“confirmation_number”值。
重试
目前,如果排队的项由于某种原因失败,则不会重新排队。因此,基本上只有一个机会。如果我们决定要给予更多尝试,可以通过抛出DelayedRequeueException来实现,这将告诉队列API重新排队项。然而,AsyncRemotePostWebformHandler继承的remotePost函数没有向上冒泡异常,它静默地处理它们并返回。因此,我们需要重写该函数。这已经完成,但已被注释掉。