Веб-формы для маркетологов - Отправить данные формы программно

В настоящее время я рассматриваю вопрос о том, стоит ли включать веб-формы для маркетологов в проект, над которым я сейчас работаю. Веб-сайт будет адаптивным дизайном с богатым пользовательским интерфейсом, поэтому я хотел бы иметь полный контроль над визуализацией формы, например надписями, полями ввода и т. Д., И не хотел бы изменять WFFM. SitecoreSimpleFormAscx.ascx файл или связанный файл CSS.

Есть ли в настоящее время какой-либо способ, используя код C#, отправить некоторые данные формы в форму Web Forms for Marketers, которая уже создана в Sitecore (при условии, что я знаю все поля)? В справочном руководстве WFFM есть фрагмент кода для доступа к уже отправленным данным веб-формы, но ничего не нужно просто отправлять.

2 ответа

Если вы не хотите копаться в пользовательских элементах управления для форм, вы можете попробовать выполнить POST для страницы, содержащей форму WFFM через JavaScript, с вашей отзывчивой страницы. В качестве альтернативы вы можете встроить и скрыть форму wffm на своей странице и снова запустить ее со скриптом. Я думаю, что второй подход был бы лучше, поскольку он позволил бы вам более непосредственно реагировать на ошибки валидации.

Вы можете отправить код формы в БД WFFM, используя следующий код, и он будет отображаться на странице отчета этой формы:

Скажем, у вас есть список полей, заполненных в списке этого класса:

public class WffmField
    {
        public string FieldName { get; set; }
        public string FieldGuid { get; set; }
        public string FieldValue { get; set; }
    }

полевой гид будет гидом из sitecore:введите описание изображения здесь

Затем вы можете сохранить в базе данных 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);

Надеюсь это поможет!

Другие вопросы по тегам