Sitecore WFFM - 如何在外部触发表单
Posted
技术标签:
【中文标题】Sitecore WFFM - 如何在外部触发表单【英文标题】:Sitecore WFFM - How to trigger a form externally 【发布时间】:2014-06-02 08:46:14 【问题描述】:我有一个营销人员的网络表单,我需要通过其他地方的代码“运行”该网络表单。
有没有办法加载网络表单并运行其执行操作?例如,对于常规站点核心项目,我可以根据其 ID 获取它,但我似乎无法找到将常规站点核心项目投射到 WFFM 项目然后执行其保存操作(并可能设置它的字段)。
【问题讨论】:
不完全确定您的情况是什么。但是您可以考虑创建自己的 WFFM 保存操作,并让该操作与您的“其他地方”代码对话? 不,因为情况正好相反。我已经有一个自定义保存操作,我需要使用表单从其他地方触发该自定义保存操作(以便在该调用中使用所有 sitecore 表单数据)。 特定的使用场景是这样的:我有一个订阅时事通讯网络表单,它工作正常。但是,我还需要在订单购买确认屏幕中进行“检查此处以注册时事通讯”(无论如何,电子邮件地址等都可用)。当客户随后购买订单时,它应该另外运行表单代码并以这种方式注册时事通讯。 好的,我明白了。而且没有简单的方法可以根据我接受的 WFFM 制作订单确认页面(或其中的一部分)? 您可能应该将 Reflector 指向 WFFM/ECM 中的“注册时事通讯”保存操作,然后查看它的作用。实际上,它只不过是将用户添加到邮件列表的特定角色中。 【参考方案1】:听起来您正在尝试将数据插入 WFFM 数据库而无需运行 WFFM 提交操作?我说对了吗?
如果是这样,您可以使用以下代码将表单代码提交到 WFFM DB,它会无缝地显示在该表单的报告页面中:
假设您在此类的列表中填充了字段列表:
public class WffmField
public string FieldName get; set;
public string FieldGuid get; set;
public string FieldValue get; set;
字段 guid 将是来自 sitecore 的 guid:
然后您可以保存到 WFFM 数据库:
// This should be populated with the data you want to send to the WFFM database
var fields = new List<WffmField>();
var wffmDatabaseFields = fields.Select(GetWFFMDatabaseField).ToList();
Sitecore.Forms.Data.DataManager.InsertForm(
formId: new Sitecore.Data.ID("<Form guid here>"),
fields: new AdaptedResultList(wffmDatabaseFields),
sessionID: AnalyticsTracker.SessionId,
data: null);
希望这会有所帮助!
【讨论】:
以上是关于Sitecore WFFM - 如何在外部触发表单的主要内容,如果未能解决你的问题,请参考以下文章