1. アクションの保存

新しい保存アクションを作成する

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

保存アクションは、Webサイトの訪問者がWebフォームを送信したときに実行される3つの 送信アクション のうちの2番目です。保存アクションは、すべての検証アクションが正常に完了した後に実行されます。

「マーケター向けWebフォーム」モジュールには、いくつかの デフォルトの保存アクション があります。ただし、インターフェイスと基本クラスを使用して新しいクラスを作成することで、独自のカスタム保存アクションを作成することもできます。

カスタム保存アクションを作成するには、Sitecore.WFFM.Abstractions.Actions.ISaveActionインターフェイスまたはSitecore.WFFM.Actions.Base.WffmSaveAction抽象クラスを継承するクラスを作成する必要があります。インターフェイスと抽象クラスには、Webフォームに割り当てられているすべての保存アクションによって呼び出されるため、新しいクラスに実装する必要があるExecuteメソッドが含まれています。

新しい保存アクションを作成するには:

  1. Visual Studioで新しいプロジェクト ( Sitecore.Forms.Sample.

  2. Sitecore.WFFM.Abstractionsアセンブリに新しい参照を追加します。保存アクションがWffmSaveActionクラスから派生している場合は、Sitecore.WFFM.Actionsアセンブリに新しい参照を追加する必要があります。

  3. Sitecore.WFFM.Abstractions.Actions.ISaveActionインターフェイスを継承する新しいクラスを作成します。たとえば、次のようにします。

    using Sitecore.Data;
    using Sitecore.Diagnostics;
    using Sitecore.Security.Authentication;
    using Sitecore.WFFM.Abstractions.Actions;
    namespace Sitecore.Forms.Sample
    {
      /// <summary>
      /// Login action 
      /// </summary>
      public class LoginAction : ISaveAction
      {
        /// <summary>
        /// Initializes a new instance of the <see cref="LoginAction"/> class.
        /// </summary>
        public LoginAction()
        {
          this.DefaultDomain = "sitecore";
        }
        /// <summary>
        /// The execute.
        /// </summary>
        /// <param name="formId">
        /// The form id.
        /// </param>
        /// <param name="adaptedFields">
        /// The adapted fields.
        /// </param>
        /// <param name="actionCallContext">
        /// The action call context.
        /// </param>
        /// <param name="data">
        /// The data.
        /// </param>
        public void Execute(ID formId, AdaptedResultList adaptedFields, ActionCallContext actionCallContext = null, params object[] data)
        {
          AdaptedControlResult login = adaptedFields.GetEntry(this.Login, "Login");
          AdaptedControlResult password = adaptedFields.GetEntry(this.Password, "Password");
          Assert.ArgumentNotNull(login, "You should fill in the 'Login' field.");
          Assert.ArgumentNotNull(password, "You should fill in the 'Password' field.");
          string userName = login.Value;
          Assert.ArgumentNotNullOrEmpty(userName, "The 'Login' field can't be empty");
          if (!userName.Contains("\\"))
          {
            userName = string.Join("\\", new[] { this.DefaultDomain, userName });
          }
          AuthenticationManager.Login(userName, password.Value, true);
        }
        /// <summary>
        /// Gets or sets the default domain.
        /// </summary>
        /// <value>The default domain.</value>
        public string DefaultDomain { get; set; }
        /// <summary>
        /// Gets or sets the login field.
        /// </summary>
        public string Login { get; set; }
        /// <summary>
        /// Gets or sets the password field.
        /// </summary>
        public string Password { get; set; }
        public ID ActionID { get; set; }
        public string UniqueKey { get; set; }
        public ActionType ActionType { get; private set; }
        public ActionState QueryState(ActionQueryContext queryContext)
        {
          return ActionState.Enabled;
        }
      }
    }
  4. クラスをアセンブリにコンパイルし、Webサイトのbinフォルダーに配置します。

  5. コンテンツ ツリーでsitecore/System/Modules/Web Forms for Marketers/Settings/Actions/Save Actionsフォルダーに移動し、右側のウィンドウでSave Actionボタンをクリックして新しいアイテムを作成します。

  6. Messageダイアログで、アイテムの名前を入力し、OKをクリックします。

  7. 新しい保存アクションアイテムで、作成したアセンブリとクラスの名前を入力して、AssemblyフィールドとClassフィールドに入力します。

    保存アクションをさらにカスタマイズするには、「 パラメータ」フィールドと「ローカライズされたパラメータ 」フィールドを変更します。

  8. Save」をクリックします。

この記事を改善するための提案がある場合は、 お知らせください!