1. Sitecore Formsのチュートリアル

チュートリアル: カスタム検証の作成

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

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

Webフォームの検証により、Webサイトの訪問者がWebフォームのフィールドに正しい値を入力することが保証されます。カスタム検証を実装することも、既存の検証に基づいて新しい検証データを作成することもできます。このチュートリアルでは、名前を検証するカスタム検証を実装する方法について説明します。1行テキスト フィールドの入力文字列で有効な名前が検証されます。

メモ

このトピックでは、カスタム検証の作成方法の例を示しますが、正規表現に基づいてName検証を作成するために、カスタム検証を作成する必要はありません。名前バリデーターは、既存のRegularExpressionValidationを再利用して作成できます。

このチュートリアルでは、次の方法について説明します。

  • 検証クラスを作成する

  • 検証アイテムを作成する

  • フィールド タイプの変更

  • フィールドエディタに検証を追加する

検証クラスを作成する

カスタム検証を作成する場合は、ValidationElement<string>.

検証クラスを作成するには、次のようにします。

  1. NameValidationクラスを作成し、ValidationElement<string>.

  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<string>
    {
        private const string NamePattern = "^[a-zA-Z ]*$";

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

        public override IEnumerable<ModelClientValidationRule> 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をクリックして、Insert from Templateをクリックします。

  3. /System/Forms/Validationテンプレートを選択します。

  4. Item NameフィールドにName Validationと入力し、Insertをクリックします。

    Insert from template dialog
  5. 作成したアイテムに移動し、設定セクションの[タイプフィールドで、値をクラス タイプ名に設定します。

  6. [メッセージフィールドに、contains an invalid nameなどのエラー メッセージを入力します。

    Error message in the Message field

フィールド タイプの変更

次に、新しい検証を使用するフィールドの種類を変更する必要があります。この例では、1行のフィールド タイプに対して新しい検証のみを使用します。

フィールドの種類を変更するには

  1. /sitecore/system/Settings/Forms/Field Types/Basic/Single-line textに移動します。

  2. 「設定」セクションの「 Allowed Validations 」フィールドで、新しい検証アイテム ( Name validationなど) を選択します。

    Specify allowed validations
手記

同じ検証タイプに基づくバリデータは、フォームデザイナーがフィールド上で一緒に有効にしないでください。たとえば、Email validatorとPhone number validatorはどちらも正規表現の検証に基づいているため、特定のフィールドで同時に有効にしないでください。フォーム デザイナーによってフィールドで同じタイプの検証が有効になっないようにするには、同じタイプのバリデーターを許可された検証リストに追加しないことをお勧めします。

フィールドエディタに検証を追加する

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

手記

このチュートリアルの例では、Sitecore Rocks Visual Studioプラグインが必要です。このプラグインは、Visual Studio 2019以前と互換性があります。

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

  2. ControlDefinitionsフィールドに、FieldValidationコントロール定義を追加します。制御定義は、次の場所にあります。/sitecore/client/Applications/FormsBuilder/Components/Layouts/PropertyGridForm/PageSettings/Common/Validation/FieldValidation

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