1. Sitecoreフォーム

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

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

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

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

また、送信アクションに関連付けられたデフォルトのエラーメッセージを非表示にすることもできます。これは、エラーメッセージの表示やフォームの送信を妨げたくない本番環境では重要かもしれません。例えば、トリガー目標 の提出アクションは、ユーザー権限の不十分でxDB Trackerが利用できない場合に失敗することがありますが、この場合はユーザーがフォームの提出を進めるようにしたいのです。

!注デフォルトのエラーメッセージはログファイル(App_Data\logs\log..

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

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

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

  1. コンテンツエディターで /sitecore/System/Settings/Forms/Submit Actionsへ行ってください。

  2. コンテンツツリーで 「データの保存 」をクリックし、設定 セクションの エラーメッセージ 欄で新しいメッセージを入力し、変更を保存してください。

    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

    { 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 actionクラス名に置き換えてください。

    Model Type field for the Save Data submit action.

    また、新しい提出アクションアイテムを作成することもできます。

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