1. Sitecoreフォーム

フォームの送信アクションエラーの処理

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

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

フォーム送信アクションの実行に失敗すると、送信アクションに関連付けられたデフォルトのエラーメッセージがフォームに表示され、ユーザーはフォームを送信できなくなります。送信アクションに関連付けられたデフォルトのエラーメッセージは、ニーズに合わせて変更できます。

大事な

送信アクションのエラーメッセージは、送信アクション中に発生するエラーについてユーザーに知らせます。これらのエラーが発生した場合、ユーザーはフォームを送信できません。エラーメッセージを消去しても、フォームの送信は続行されません。

送信アクションエラーのデフォルトのエラーメッセージを変更する

この手順では、Save Dataアクションを例に、送信アクションのデフォルトのエラーメッセージを変更する方法を示します。フォームを作成すると、「 データの保存 」送信アクションによって、フォームのデータがFormsデータベースに保存されます。

デフォルトのエラーメッセージを変更するには:

  1. コンテンツ エディタで、/sitecore/System/Settings/Forms/Submit Actionsに移動します。

  2. コンテンツ ツリーでSave Dataをクリックし、SettingsセクションのError Messageフィールドに新しいメッセージを入力して変更を保存します。

    Error Message field for the Save Data submit action.

条件付きフォーム送信エラーメッセージの作成

より具体的なエラーメッセージが必要な場合は、カスタム送信アクションを作成してエラーメッセージを条件付きで設定し、条件が満たされない場合はデフォルトのエラーメッセージを表示できます。

条件付きエラーメッセージを作成するには:

  1. フォーム送信エラー メッセージをプログラムで保存アクションから変更するには、SubmitActionBaseクラスのExecuteActionメソッドをオーバーライドするカスタムの データの保存 アクションを作成します。ここでは、事前定義された送信エラーメッセージを上書きするカスタマイズされたエラーメッセージを割り当てることができます。

                formSubmitContext.Errors.Add(new FormActionError
                {
                    ErrorMessage = _errorMessage
                });
  2. カスタムSave Data submit actionクラス内では、さまざまな条件に基づいてエラー メッセージの値を管理する必要があります。例えば:

    class CustomSaveData:SaveData
        {
            private string _errorMessage;
            public CustomSaveData(ISubmitActionData submitActionData) : base(submitActionData)
            {
            }
    
            protected override bool SavePostedData(Guid formId, Guid sessionId, IList;IViewModel postedFields)
            {
                if (formId == Guid.Empty) //Condition 1
                {
                    _errorMessage = "Invalid form id!";
                    return false;
                }
    
                if (sessionId == Guid.Empty)// Condition 2
                {
                    _errorMessage = "Invalid session!";
                    return false;
                }
    
                try
                {
                    var formEntry = new FormEntry
                    {
                        Created = DateTime.UtcNow,
                        FormItemId = formId,
                        FormEntryId = sessionId,
                        Fields = new ListFieldData()
                    };
    
                    if (postedFields != null)
                    {
                        foreach (var postedField in postedFields)
                        {
                            AddFieldData(postedField, formEntry);
                        }
                    }
                    else
                    {
                        _errorMessage = "No data to save!"; //Condition 3
                        return false;
                    }
    
                    FormDataProvider.CreateEntry(formEntry);
    
                    return true;
                }
                catch (Exception exception)
                {
                    Logger.LogError(exception.Message, exception, this);
                    _errorMessage = exception.Message; //Condition 4
                    return false;
                }
            }
    
            public override void ExecuteAction(FormSubmitContext formSubmitContext, string parameters)
            {
                Assert.ArgumentNotNull(formSubmitContext, nameof(formSubmitContext));
    
                string data;
                if (TryParse(parameters, out data))
                {
                    try
                    {
                        if (Execute(data, formSubmitContext))
                        {
                            return;
                        }
                    }
                    catch (ArgumentNullException)
                    {
                    }
                }
    
                formSubmitContext.Errors.Add(new FormActionError
                {
                    ErrorMessage = _errorMessage
                });
            }
        }
        
  3. デフォルトの「データの保存」アクションを置き換えるには、「 /sitecore/System/Settings/Forms/Submit Actions」に移動し、「 Save Data 」をクリックし、「 Settings 」セクションの「 Model Type 」フィールドで、現在の値をカスタムSave Data actionクラス名に置き換えます。

    Model Type field for the Save Data submit action.

    新しいサブミットアクションアイテムを作成することもできます

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