ウォークスルー

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

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

ウェブフォームの検証は、ウェブサイト訪問者がウェブフォームのフィールドに正しい値を入力することを保証します。カスタム検証を実装するか、既存の検証に基づいて新しい検証ツールを作成することができます。このウォークスルーでは、名前を検証するカスタム検証の実装方法を説明します。有効な名前に対して、シングルラインテキストフィールドの入力文字列を検証します。

!注このトピックではカスタム検証の作成例を提供しますが、正規表現に基づく名前検証器を作成するにはカスタム検証を作成する必要はありません。 既存のRegularExpressionValidationを再利用することで名前検証器を作成できます。

このウォークスルーでは、以下の方法を説明します:

  • 検証クラスを作成します
  • 検証項目を作成する
  • フィールドタイプを変更する
  • 検証をフィールドエディタに追加してください

検証クラスを作成します

カスタム検証を作成する際は、ValidationElementから継承するクラスを作成しなければなりません。

検証クラスを作成するには:

  1. NameValidationクラスを作成し、そのValidationElementから継承します。
  2. Sitecore.ExperienceForms.Mvcパッケージとアセンブリを参照System.ComponentModel.DataAnnotation。
  3. サーバー検証のために Validateメソッドを実装してください。
  4. クライアント検証のために ClientValidationRules プロパティを実装してください。
  5. Initializeメソッドをオーバーライドして、検証済みモデルからプロパティ(例えばフィールドのタイトル)を初期化します。

using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Text.RegularExpressions; using System.Web.Mvc; using Sitecore.ExperienceForms.Mvc.Models.Fields; using Sitecore.ExperienceForms.Mvc.Models.Validation;

namespace Sitecore.ExperienceForms.Samples.Validation { public class NameValidation : ValidationElement { private const string NamePattern = "^a-zA-Z *$";

public NameValidation(ValidationDataModel validationItem) : base(validationItem) { }

public override IEnumerable ClientValidationRules { get { var clientValidationRule = new ModelClientValidationRule { ErrorMessage = FormatMessage(Title), ValidationType = "regex" };

clientValidationRule.ValidationParameters.Add("pattern", NamePattern);

yield return clientValidationRule; } }

public string Title { get; set; }

public override ValidationResult Validate(object value) { if (value == null) { return ValidationResult.Success; }

var regex = new Regex(NamePattern, RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture | RegexOptions.Compiled);

var stringValue = (string)value; if (string.IsNullOrEmpty(stringValue) || regex.IsMatch(stringValue)) { return ValidationResult.Success; }

return new ValidationResult(FormatMessage(Title)); }

public override void Initialize(object validationModel) { base.Initialize(validationModel);

var obj = validationModel as StringInputViewModel; if (obj != null) { Title = obj.Title; } } } }

検証項目を作成する

検証アイテムを作成するには:

  1. /sitecore/System/Settings/Forms/Validationsに行って。

  2. Validationsを右クリックし、Insertをクリックし、TemplateからInsertをクリックします。

  3. /System/Forms/Validationテンプレートを選択してください。

  4. Item Name欄でName Validationを入力し、「挿入」をクリックします。

    Insert from template dialog
  5. 作成したアイテムに移動し、設定 セクションのType欄で値をクラスタイプ名に設定してください。

  6. メッセージ欄にエラーメッセージを入力すると、例えば無効な名前が含まれています

    Error message in the Message field

フィールドタイプを変更する

次に、新しい検証を使いたいフィールドタイプを変更しなければなりません。この例では、単一行のフィールドタイプに対してのみ新しい検証を使いたいです。

フィールドタイプを変更するために

  1. /sitecore/system/設定/Forms/フィールドタイプ/Basic/Single-line textにアクセスしてください。

  2. 設定セクションの 「許可された検証 」フィールドで、例えばName validationの新しい検証項目を選択します。

    Specify allowed validations

!注同じ検証タイプに基づくバリデーターは、フォームデザイナーによってフィールド上で同時に有効化されるべきではありません。例えば、メールバリデーターと電話番号バリデーターはどちらも正規表現検証に基づいており、特定のフィールドで同時に有効化してはいけません。フォームデザイナーがフィールド上で同じタイプの検証を有効にしないように、同じタイプのバリデーターを許可された検証リストに追加しないことをお勧めします。

検証をフィールドエディタに追加してください

ほとんどの要素にはフィールドエディタにFieldValidationコントロールが追加されています。もしデフォルトで検証が表示されていない場合は、フィールドエディタに検証を追加できます:

!注このウォークスルーの例では、Sitecore Rocks Visual Studioプラグインが必要です。このプラグインはVisual Studio 2019以前のバージョンに対応しています。

  1. Coreデータベースに切り替え、コンテンツエディターで /sitecore/client/Applications/FormsBuilder/Components/Layouts/PropertyGridForm/PageSettings/Settingsに移動し、検証を追加したい要素をクリックしてください。

  2. ControlDefinitionsフィールドにFieldValidation制御定義を追加してください。Controlの定義は以下で見つけることができます:/sitecore/client/Applications/FormsBuilder/Components/Layouts/PropertyGridForm/PageSettings/Common/Validation/FieldValidation

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