我创建了一个自定义Save Action
,它会将WFFM字段值写入第三方服务。自定义Save Action
使用开箱即用的FieldMappings
编辑器,以便内容编辑器可以指定哪些字段映射到发送到服务的属性。
我有它工作所以所有属性都出现在用户的编辑器中以选择相关的字段。
问题在于我无法找到如何在Execute
的{{1}}方法中获取这些映射。我已经对现有的Tell a Field Save Action
进行了反编译,因为它也使用了Save Action
编辑器,但最终忽略了映射。
MappingField
任何人都知道如何获得映射?
答案 0 :(得分:4)
映射在表单的“保存操作”字段中存储为键/值对,然后将其填充到已定义的Mapping
属性中。
检查表单的Save Field
,您会发现字符串的格式与<mapping>key=value1|key=value2</mapping>
类似。这是您在保存操作中可用的字符串值。你需要自己处理它,WFFM不会为你做任何事情。要访问映射,请使用Sitecore util方法:
NameValueCollection nameValueCollection = StringUtil.ParseNameValueCollection(this.Mapping, '|', '=');
这使您可以访问键/值对。然后,您需要枚举这些字段或提交的表单数据(如果适用)以填充对象以供进一步操作。
假设键是WFFM字段ID,值是要映射的字段,类似于此
foreach (AdaptedControlResult adaptedControlResult in fields)
{
string key = adaptedControlResult.FieldID; //this is the {guid} of the WFFM field
if (nameValueCollection[key] != null)
{
string value = nameValueCollection[key]; //this is the field you have mapped to
string submittedValue = adaptedControlResult.Value; //this is the user submitted form value
}
}
在Sitecore.Form.Submit.CreateItem
中查看Sitecore.Forms.Custom
以获取类似操作的示例,并使用字段映射编辑器。
答案 1 :(得分:2)
我认为通过在Save Action类中将字段与公共属性匹配来连接它。
所以对你的例子来说:
public string EmailAddress { get; set; }
public string ConfirmEmailAddress { get; set; }
public string Title { get; set ;}
etc..