フォームのアクション送信エラーの処理
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
フォームの送信アクションが実行されない場合、送信アクションに関連するデフォルトのエラーメッセージがフォームに表示され、ユーザーはフォームを送信できなくなります。送信アクションに関連するデフォルトのエラーメッセージは、ご自身のニーズに合わせて変更できます。
また、送信アクションに関連付けられたデフォルトのエラーメッセージを非表示にすることもできます。これは、エラーメッセージの表示やフォームの送信を妨げたくない本番環境では重要かもしれません。例えば、トリガー目標 の提出アクションは、ユーザー権限の不十分でxDB Trackerが利用できない場合に失敗することがありますが、この場合はユーザーがフォームの提出を進めるようにしたいのです。
!注デフォルトのエラーメッセージはログファイル(App_Data\logs\log.
.
デフォルトのエラーメッセージを「アクションの送信エラー」に変更します
この手順では、Save Dataアクションを例にして、送信アクションのデフォルトエラーメッセージを変更する方法を示します。フォームを作成すると、「 Save Data Submit action」がフォーム データをFormsデータベースに保存します。
デフォルトのエラーメッセージを変更するには:
-
コンテンツエディターで /sitecore/System/Settings/Forms/Submit Actionsへ行ってください。
-
コンテンツツリーで 「データの保存 」をクリックし、設定 セクションの エラーメッセージ 欄で新しいメッセージを入力し、変更を保存してください。
!重要デフォルトのエラーメッセージを隠し、フォームを送信できるようにするには、エラーメッセージフィールドを空欄のままにしてください。
条件付きフォームの作成 送信エラーメッセージ
より具体的なエラーメッセージが欲しい場合は、カスタム送信アクションを作成して条件付きエラーメッセージを設定し、条件が満たされない場合はデフォルトのエラーメッセージを表示することができます。
条件付きエラーメッセージを作成するには:
-
フォームの送信エラーメッセージをセーブアクションからプログラム的に変更するには、SubmitActionBaseクラスのExecuteActionメソッドを上書きするカスタムセーブデータアクションを作成します。ここでは、あらかじめ定義された送信エラーメッセージを上書きするカスタマイズされたエラーメッセージを割り当てることができます。
formSubmitContext.Errors.Add(new FormActionError { ErrorMessage = _errorMessage });
-
カスタム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 }); } }
-
デフォルトのセーブデータアクションを置き換えるには、/sitecore/System/Settings/Forms/Submit Actionsに移動して 「セーブデータ 」をクリックし、設定 セクションの モデルタイプ フィールドで現在の値をカスタムSave Data actionクラス名に置き換えてください。
また、新しい提出アクションアイテムを作成することもできます。