Sitecore WFFM - Как вызвать форму извне

У меня есть веб-формы для маркетологов, и мне нужно «запустить» эту веб-форму с помощью кода из другого места.

Есть ли способ загрузить веб-форму и запустить ее выполнение? Например, с обычным элементом sitecore я могу получить его на основе его идентификатора, но, похоже, я не могу найти способ преобразовать обычный элемент sitecore в элемент WFFM, а затем выполнить его действия по сохранению (и, возможно, установить его поля).


person Jesper Hoff    schedule 02.06.2014    source источник
comment
Не совсем уверен, что вы сценарий здесь. Но вы могли бы подумать о создании собственного действия сохранения WFFM, и, возможно, чтобы оно говорило с вашим кодом где-то еще?   -  person Mark Cassidy    schedule 02.06.2014
comment
Нет, потому что сценарий прямо противоположный. У меня уже есть настраиваемое действие сохранения, и мне нужно инициировать это настраиваемое действие сохранения откуда-то еще, используя форму (чтобы в этом вызове использовались все данные формы sitecore).   -  person Jesper Hoff    schedule 02.06.2014
comment
Конкретный сценарий использования таков: у меня есть веб-форма подписки на информационный бюллетень, и она отлично работает. Тем не менее, мне также нужно поставить галочку здесь, чтобы подписаться на информационный бюллетень, который доступен на экране подтверждения покупки заказа (где адрес электронной почты среди прочего доступен в любом случае). Когда клиент затем покупает заказ, он должен дополнительно запустить код формы и таким образом подписаться на рассылку новостей.   -  person Jesper Hoff    schedule 02.06.2014
comment
Да я вижу. И нет простого способа сделать страницу подтверждения заказа (или ее часть) на основе WFFM я так понимаю?   -  person Mark Cassidy    schedule 02.06.2014
comment
Вероятно, вам следует указать Reflector на действие сохранения «Подписаться на рассылку новостей» в WFFM/ECM и посмотреть, что оно делает. На самом деле это не более чем добавление пользователя в определенную роль в списке рассылки.   -  person Mark Cassidy    schedule 02.06.2014
comment
В прошлом я делал так: обычное действие внешней формы указывало на внешний обработчик запросов (.ashx), который затем был доступен серверу. Это позволит настроить внешнюю форму любым способом, а данные, переданные в файл ashx, можно будет сравнить с WFFM для проверки на стороне сервера и наличия определенных полей в Sitecore. Дайте мне знать, если вам нужен пример.   -  person Ben Sewards    schedule 16.06.2014


Ответы (1)


Похоже, вы пытаетесь вставить данные в базу данных WFFM, не выполняя действие отправки WFFM? Я правильно понял?

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

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

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

поле guid будет guid от 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);

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

person aceanindita    schedule 16.06.2014