如何在我的 umbraco 表单中获取表单字段的别名
How to get the alias name of a form field in my umbraco form
我正在使用 umbraco 表单,我想将电子邮件发送到该字段中给出的输入。
我想设置后台 umbraco 表单字段的别名,必须通过工作流将电子邮件发送到该字段。
但是每当我尝试使用 {fieldAliasName} 发送带有 umbraco 表单字段项的电子邮件时,它都不起作用。但是当我传递电子邮件地址时,它不是别名,而是发送电子邮件。
我想验证别名,如何从我的 umbraco 表单中看到它。
尝试在此处循环所有现有表单
Umbraco.Forms.Data.Storage.FormStorage fs = new Umbraco.Forms.Data.Storage.FormStorage();
foreach (var f in fs.GetAllForms())
{
Response.Write("Name:"+f.Name + ", Id:" + f.Id + "<br/>");
foreach (var field in f.AllFields) {
Response.Write("Alias:"+field.Alias + "<br/>");
}
}
你肯定会抓住他们的别名..
有多种方法可以做到这一点。不过,要执行您想要的操作,我建议创建一个自定义工作流。请参阅此处的文档:
下面是一个示例工作流,您可以以此为基础,它比上面提到的要简单一些:
public class FormSelectSendEmail : SendEmail
{
public FormSelectSendEmail()
{
Name = "Send Email to address in Form";
Id = new Guid("9077B74A-1DC7-487A-AB9A-04E7048D1780");
Description = "Send the result of the form to an email address typed into a form field";
}
[Setting("EmailField",
description = "Specify the field that email will be typed into.",
view = "~/App_Plugins/UmbracoFormExtensions/SettingTypes/fieldpicker.html")]
public string EmailField
{
get; set;
}
public override List<Exception> ValidateSettings()
{
var exceptions = new List<Exception>(base.ValidateSettings());
if (string.IsNullOrWhiteSpace(this.EmailField))
{
exceptions.Add(new Exception("'Email Field' has not been specified"));
}
return exceptions;
}
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e)
{
var rf = record.RecordFields[new Guid(EmailField)];
string email = rf.ValuesAsString(true);
if (!string.IsNullOrWhiteSpace(email))
{
// TODO: Send the Email
return WorkflowExecutionStatus.Completed;
}
return WorkflowExecutionStatus.Cancelled;
}
}
上述解决方案中 ~/App_Plugins/UmbracoFormExtensions/SettingTypes/fieldpicker.html
不存在(目前)所以这里有更多代码供您使用:
angular.module("umbraco").controller("UmbracoFormExtensions.SettingTypes.FieldPickerController",
function ($scope, $routeParams, pickerResource) {
if (!$scope.setting.value) {
$scope.setting.value = "";
}
pickerResource.getAllFields($routeParams.id).then(function (response) {
$scope.fields = response.data;
});
});
<div ng-controller="UmbracoFormExtensions.SettingTypes.FieldPickerController">
<h5>Source Field</h5>
<select ng-model="redirection.source" ng-options="field.id as field.value for field in fields">
<option value="">Select a source field</option>
</select>
</div>
我正在使用 umbraco 表单,我想将电子邮件发送到该字段中给出的输入。
我想设置后台 umbraco 表单字段的别名,必须通过工作流将电子邮件发送到该字段。
但是每当我尝试使用 {fieldAliasName} 发送带有 umbraco 表单字段项的电子邮件时,它都不起作用。但是当我传递电子邮件地址时,它不是别名,而是发送电子邮件。
我想验证别名,如何从我的 umbraco 表单中看到它。
尝试在此处循环所有现有表单
Umbraco.Forms.Data.Storage.FormStorage fs = new Umbraco.Forms.Data.Storage.FormStorage();
foreach (var f in fs.GetAllForms())
{
Response.Write("Name:"+f.Name + ", Id:" + f.Id + "<br/>");
foreach (var field in f.AllFields) {
Response.Write("Alias:"+field.Alias + "<br/>");
}
}
你肯定会抓住他们的别名..
有多种方法可以做到这一点。不过,要执行您想要的操作,我建议创建一个自定义工作流。请参阅此处的文档:
下面是一个示例工作流,您可以以此为基础,它比上面提到的要简单一些:
public class FormSelectSendEmail : SendEmail
{
public FormSelectSendEmail()
{
Name = "Send Email to address in Form";
Id = new Guid("9077B74A-1DC7-487A-AB9A-04E7048D1780");
Description = "Send the result of the form to an email address typed into a form field";
}
[Setting("EmailField",
description = "Specify the field that email will be typed into.",
view = "~/App_Plugins/UmbracoFormExtensions/SettingTypes/fieldpicker.html")]
public string EmailField
{
get; set;
}
public override List<Exception> ValidateSettings()
{
var exceptions = new List<Exception>(base.ValidateSettings());
if (string.IsNullOrWhiteSpace(this.EmailField))
{
exceptions.Add(new Exception("'Email Field' has not been specified"));
}
return exceptions;
}
public override WorkflowExecutionStatus Execute(Record record, RecordEventArgs e)
{
var rf = record.RecordFields[new Guid(EmailField)];
string email = rf.ValuesAsString(true);
if (!string.IsNullOrWhiteSpace(email))
{
// TODO: Send the Email
return WorkflowExecutionStatus.Completed;
}
return WorkflowExecutionStatus.Cancelled;
}
}
上述解决方案中 ~/App_Plugins/UmbracoFormExtensions/SettingTypes/fieldpicker.html
不存在(目前)所以这里有更多代码供您使用:
angular.module("umbraco").controller("UmbracoFormExtensions.SettingTypes.FieldPickerController",
function ($scope, $routeParams, pickerResource) {
if (!$scope.setting.value) {
$scope.setting.value = "";
}
pickerResource.getAllFields($routeParams.id).then(function (response) {
$scope.fields = response.data;
});
});
<div ng-controller="UmbracoFormExtensions.SettingTypes.FieldPickerController">
<h5>Source Field</h5>
<select ng-model="redirection.source" ng-options="field.id as field.value for field in fields">
<option value="">Select a source field</option>
</select>
</div>