One of most common scenario I came across in Sitecore 9 Form is to create your custom submit action. You can achieve this in three simple steps.
Step 1: Create submit action button in Sitecore
Create the custom action button under /sitecore/system/Settings/Forms/Submit Actions.
Step 2: Create code behind class
Create a class that inherits SubmitActionBase class and override the Execute method.
public class CustomSubmitAction : SubmitActionBase<string>
{
public CustomSubmitAction(ISubmitActionData submitActionData) : base(submitActionData)
{
}
public override void ExecuteAction(FormSubmitContext formSubmitContext, string parameters)
{
Assert.ArgumentNotNull((object)formSubmitContext, nameof(formSubmitContext));
if (this.TryParse(parameters, out string target))
{
try
{
if (this.Execute(target, formSubmitContext))
return;
}
catch (ArgumentNullException ex)
{
}
}
formSubmitContext.Errors.Add(new FormActionError()
{
ErrorMessage = this.SubmitActionData.ErrorMessage
});
}
protected override bool Execute(string data, FormSubmitContext formSubmitContext)
{
Assert.ArgumentNotNull(data, nameof(data));
Assert.ArgumentNotNull(formSubmitContext, nameof(formSubmitContext));
//Prepare model here
var model = new EmailModel()
{
Email = GetValue(formSubmitContext.Fields.FirstOrDefault(f => f.Name.Equals("EmailAddress")))
};
// Call any API service call
return true;
}
private static string GetValue(object field)
{
return field?.GetType().GetProperty("Value")?.GetValue(field, null)?.ToString() ?? string.Empty;
}
protected override bool TryParse(string value, out string target)
{
target = string.Empty;
return true;
}
Step 3: Set the custom submit action fields
Update the ModelType and Error Message on the button shown below.
Bind the custom submit action to Submit button like below.
Publish the button. The submit button on form should now trigger the custom save action! Any questions, let me know.
Happy sitecoring.
Hi,
It a very nice post, can you create the something on sitecore 9 form Custom Attribute.
for e.g
input class=”field__input js-first_name parsley-error” id=”first_name” name=”first_name” type=”text” value=”” data-ga-label=”First Name” data-parsley-trigger=”blur” tabindex=”1″ data-parsley-id=”7″
Thank you. I haven’t done any custom attribute, but this SSE post might help you.
https://sitecore.stackexchange.com/questions/18641/creating-custom-data-attribute-for-sitecore-form-fields