Добавить повторно используемую форму WFFM с базовыми полями в параметры вставки

В настоящее время в папке templates\wffm\forms есть параметры вставки, такие как «Папка формы» и объект «Форма». Это отлично подходит для людей, которые используют базовый шаблон «Форма». В моем случае есть люди, которые хотели бы использовать базовую платежную форму со скрытыми полями и другими действиями, которые я создал.

Я хотел бы добавить свою пользовательскую форму «MyPaymentForm» в параметры вставки, чтобы она отображалась для всех пользователей формы, чтобы выбрать их в качестве базовой формы. Проблема в том, что это форма с полями, а не шаблон, поэтому Параметры вставки не дадут мне его добавить.

  • Я хочу, чтобы моя платежная форма с базовыми полями была шаблоном для каждой группы, которая ее использует. Например, все будут использовать базовые поля, но также будут иметь настраиваемые поля в зависимости от своего отдела.

Можете ли вы порекомендовать способ, которым я могу обслуживать «MyPaymentForm» для пользователей, чтобы его можно было повторно использовать для разных групп?

Спасибо, Крис


person foxtrotZulu    schedule 26.03.2012    source источник


Ответы (1)


Я бы рекомендовал использовать шаблон команды для выполнения того, что вы просите. Шаблон команды — это, по сути, часть пользовательской логики, которую можно назначить параметрам вставки.

В вашем случае вы можете создать шаблон команды с именем «MyPaymentForm» (или что-то еще, что вы придумаете), а затем назначить этот шаблон команды в поле «Параметры вставки» любого шаблона/элемента, который вы хотите. Когда пользователь щелкает правой кнопкой мыши «Вставить->» и ваш шаблон команды доступен, пользователь может щелкнуть ваш шаблон команды «MyPaymentForm», и ваш пользовательский код будет выполнен.

Действие вашего шаблона команды может быть таким же простым, как создание копии вашей базовой формы и вставка ее в дерево содержимого, где пользователь выполнил шаблон команды.

Вот пример кода шаблона команды, который может выполнить то, что вы хотите. Это совершенно не проверено, но концепция есть.

namespace MyNameSpace
{
    public class CopyPaymentFormCommand : Sitecore.Shell.Framework.Commands.Command
    {
        public override void Execute(Sitecore.Shell.Framework.Commands.CommandContext context)
        {
            if (context.Items.Length == 0)
                return;

            Sitecore.Data.Items.Item destinationItem = context.Items[0];
            if (destinationItem == null)
                return;

            //retrieve the base MyPaymentForm item
            Sitecore.Data.Items.Item myPaymentForm = destinationItem.Database.GetItem("MyPaymentForm GUID");
            if (myPaymentForm == null)
                return; // instead of just exiting here, you may want to log an error first

            //copy the MyPaymentForm item to the location in the content tree from which the command template was triggered
            Sitecore.Data.Items.Item copyOfMyPaymentForm = myPaymentForm.CopyTo(destinationItem, "MyPaymentForm");

            //perform any necessary post-processing of your newly copied item
        }
    }
}

После создания пользовательского кода вам необходимо подключить Sitecore для распознавания и использования вашей команды.

1. Добавьте элемент "команда" в файл /App_Config/Commands.config, например:

<command name="mycustomcommands:forms:copypaymentform" type="MyNamespace.CopyPaymentFormCommand, MyAssemblyName" />

2. Затем создайте элемент шаблона команды в разделе /sitecore/Templates. Вы можете сделать это, щелкнув правой кнопкой мыши соответствующую папку в /sitecore/Templates и выбрав Insert->Insert From Template, затем выберите шаблон данных «/sitecore/Templates/System/Branches/Command Template».

3. Затем во вновь созданном элементе "Шаблон команды" заполните поле "Команда" (содержащееся в разделе "Данные") следующим текстом: mycustomcommands:forms:copypaymentform(id=$ParentID) примечание: имя команды совпадает с именем команды, определенным в файле Commands.config

4. Теперь у вас есть шаблон команды, который можно назначить в качестве параметра вставки. Для этого просто отредактируйте элемент __Стандартные значения любого выбранного вами шаблона и выберите «Назначить параметры вставки». В диалоговом окне «Параметры вставки» перейдите к созданному вами элементу «Шаблон команды» и добавьте его в «Выбранный» список параметров вставки.

Теперь, когда пользователь пытается вставить новый элемент под элемент с шаблоном, содержащим параметр вставки вашего шаблона команды, у него будет возможность щелкнуть ваш шаблон команды. Это приведет к срабатыванию кода вашего шаблона команды, который, в свою очередь, создаст копию вашей платежной формы в месте, из которого пользователь выполнил команду.

Дополнительные сведения о шаблонах команд см. в этом документе по SDN (в частности, в главе 4): http://sdn.sitecore.net/upload/sitecore6/datadefinitioncookbook-usletter.pdf

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

person Adam Weber    schedule 27.03.2012