Sitecore WFFM:以编程方式提交表单的问题

Sitecore WFFM:以编程方式提交表单的问题,第1张

概述我一直试图将自己的表格提交给WFFM.我创建的表单与使用WFFM创建的表单相同,这样所有字段都可以正确映射. 我开始执行以下步骤:https://jermdavis.wordpress.com/2015/05/18/programmatic-wffm-submissions/ 我不得不对代码进行微小的更改,以使SubmitActionManager工作 The members of Sitecor 我一直试图将自己的表格提交给WFFM.我创建的表单与使用WFFM创建的表单相同,这样所有字段都可以正确映射.

我开始执行以下步骤:https://jermdavis.wordpress.com/2015/05/18/programmatic-wffm-submissions/

我不得不对代码进行微小的更改,以使submitActionManager工作

The members of Sitecore.Form.Core.submit.submitActionManager class
have been moved to the IActionExecutor interface.To obtain the
instance of this interface use the
(IActionExecutor)Factory.CreateObject (“wffm/wffmActionExecutor”,
false) call.

以下是我到目前为止的代码:

public voID submitData(ContactUsFormModel data)    {        var results = new List<ControlResult>();        results.Add(makeControlResult(Models.Constants._cufFirstnameID,"First name",data.Firstname));        results.Add(makeControlResult(Models.Constants._cufLastnameID,"Last name",data.Lastname));        results.Add(makeControlResult(Models.Constants._cufEmailID,"Email",data.Email));        results.Add(makeControlResult(Models.Constants._cufCompanyID,"Company",data.Company));        results.Add(makeControlResult(Models.Constants._cufSubjectID,"Subject",data.Subject));        results.Add(makeControlResult(Models.Constants._cufMessageID,"Message",data.Message));        var formItem = Sitecore.Context.Database.GetItem(Models.Constants._contactUsFormID);        var simpleForm = new SitecoreSimpleForm(formItem);        var saveActionXml = simpleForm.FormItem.SaveActions;        var actionList = Sitecore.Form.Core.ContentEditor.Data.ListDeFinition.Parse(saveActionXml);        var actionDeFinitions = new List<ActionDeFinition>();        actionDeFinitions.AddRange(actionList.Groups.SelectMany(x => x.ListItems).Select(li => new ActionDeFinition(li.ItemID,li.Parameters) { UniqueKey = li.UnicID }));        var submitActionManager = (IActionExecutor)Factory.CreateObject("wffm/wffmActionExecutor",false);        Sitecore.Form.Core.WffmActionEvent sessionID = new Sitecore.Form.Core.WffmActionEvent();// SessionIDGuID        var result = submitActionManager.ExecuteSaving(ID.Parse(Models.Constants._contactUsFormID),results.ToArray(),actionDeFinitions.ToArray(),true,ID.Parse( sessionID.SessionIDGuID ));    }    private ControlResult makeControlResult(string fIEldID,string fIEldname,string fIEldValue)    {        return new ControlResult(fIEldname,fIEldValue,string.Empty)        {            FIEldID = fIEldID,FIEldname = fIEldname,Value = fIEldValue,Parameters = string.Empty        };    }

我不知道从哪里得到Sitecore.Form.Core.Analytics.AnalyticsTracker.SessionID来在ExecuteSaving中使用它,所以我使用了WffmActionEvent.
我所遵循的指南也使用了Execute,现在已弃用,所以我不得不使用ExecureSaving(我的最佳猜测).

但是,这似乎并未将提交的数据发布到数据库中.我无法在WFFM表单报告或mongoDB内部看到任何提交内容.
但是日志表明表单正在保存到数据库中,不确定其他警告的含义.

24688 17:20:39 WARN  [WFFM] Tracker.Current  is not initialized24688 17:20:39 INFO  AUDIT (sitecore\admin): [WFFM] Form {978DBF4C-0F56-45A8-A9AC-52EF8D995DDF} is saving to db24688 17:20:39 WARN  [WFFM] Tracker.Current.Contact  is not initialized24688 17:20:39 WARN  [WFFM]  Tracker.Current.Interaction  is not initialized24688 17:20:39 WARN  [WFFM] CurrentSession  is not initialized
解决方法 当您使用Sitecore 8时,表单提交存储在MongoDB中. Sitecore的MongoDB实现,xDB主要依赖于跟踪用户,称之为联系人.

存储在xDB中的大多数数据通过ContactID链接到联系人.您在日志中找到的错误消息表明当前未启用跟踪,因此不存在联系,并且站点和用户之间没有交互.

因此,您需要启动Sitecore.Tracker我建议使用以下代码

if (!Tracker.IsActive)    Tracker.StartTracking();if (!Tracker.IsActive || Tracker.Current.Contact == null){    // handle no tracker and contact}

现在您已经进行了跟踪工作,您需要为sessionID变量使用正确的ID.

您关注的博客基于Sitecore 7,Sitecore 8 Sitecore.Form.Core.Analytics.AnalyticsTracker.SessionID已删除.我反编译Sitecore 7代码和Sitecore.Form.Core.Analytics.AnalyticsTracker.SessionID最终使用Tracker.CurrentVisit.VisitID.

但是,Sitecore 8中的命名空间已更改,Visits现在称为交互,因此您需要使用的是变量SessionID

Tracker.Current.Interaction.InteractionID;

这应该可以解决您目前遇到的问题,但您可能需要更多的开发才能完成它.

总结

以上是内存溢出为你收集整理的Sitecore WFFM:以编程方式提交表单的问题全部内容,希望文章能够帮你解决Sitecore WFFM:以编程方式提交表单的问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1045157.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存