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

チュートリアル: カスタム フォーム要素の作成

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

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

Sitecore Formsには、フォームにドラッグできるデフォルトのフォーム要素が付属しています。カスタムフォーム要素を作成するには、以下を作成します。

  • 新しいフィールド テンプレート。

  • FieldViewModelクラス (整数フィールドや複数行テキスト フィールドなどのシンプル フィールド タイプの場合) またはListViewModelクラス (ドロップダウン リストなどのリスト フィールド タイプの場合) から派生する新しいクラス。

  • かみそりビュー ファイル。

  • Razorビュー ファイルを使用してレンダリングを行うフィールド タイプのアイテム。

また、要素にカスタム検証を追加することもできます。

このチュートリアルでは、ビデオのカスタム フォーム要素を作成する手順について説明します。次の方法について説明します。

  • フィールド テンプレートの作成

  • 新しいクラスを作成する

  • Razorビュー ファイルを作成する

  • フォーム要素ペインのセクションを作成する

  • フィールドエディタのパラメータを設定する

  • フィールド タイプ アイテムの作成

  • オペレーターのカスタムフィールドタイプを有効にする

フィールド テンプレートの作成

Sitecoreテンプレートはフォーム要素を定義します。新しい要素を作成するには、まずフィールドテンプレートを作成します。

フィールドテンプレートを作成するには:

  1. コンテンツ エディターでsitecore/Templatesに移動し、新しいフォルダー ( Fieldsというフォルダーなど) を作成します。

  2. コンテンツ ツリーで新しいフォルダをクリックし、FolderタブでNew Templateをクリックします。

  3. Select nameページの「Name」フィールドにテンプレートの名前を入力し、「Base template」フィールドでFieldテンプレート(Templates/System/Forms/Fields/Field)を選択して、「Next」をクリックします。

  4. Locationページで、テンプレートを保存するフォルダーを選択し、Nextをクリックして、Closeをクリックします。

  5. コンテンツ ツリーで、新しいテンプレートを選択した状態で、Builderタブをクリックします。

  6. 次のテンプレートフィールドを追加します。

    • URL(1行テキスト)

    • 幅 (整数)

    • 高さ (整数)

  7. 各テンプレート フィールドについて、DataセクションのContentタブでSharedチェック ボックスをオンにし、Messageダイアログ ボックスで変更を確認します。

  8. コンテンツ ツリーで新しいテンプレートをクリックし、リボンのOptionsタブをクリックして、Standard valuesをクリックします。

  9. リボンのSaveをクリックしてテンプレートを保存します。

メモ

フィールドがフォーム要素ペインからフォームキャンバスに追加されるときに、標準値がデフォルトのフィールド値として使用されるため、フィールドテンプレートの標準値を作成することが重要です。フィールドテンプレートに標準値がない場合、要素をフォームにドロップすることはできません。

新しいクラスを作成する

次に、FieldViewModelクラスから派生する新しいクラスを作成して、Viewモデルのロジックを作成します。既存のフォーム要素をカスタマイズし、その機能を拡張してカスタム要素を作成するには、それぞれの要素クラスから継承する必要があります。たとえば、新しいリスト要素を作成する場合は、ListViewModelクラスから継承できます。

手記

フォーム要素の表示方法を制御するには、HTMLを配置し、独自のCSSクラスを挿入します。

新しいクラスを追加するには:

  1. Visual Studioで、新しいクラス ライブラリ プロジェクト ( FormsDemoなど) を作成します。

  2. FieldViewModelクラスを追加します。たとえば、VideoViewModelクラスを追加します。

    public class VideoViewModel : FieldViewModel

    手記

    ポストされたフィールドのモデルは、セッション状態に格納されます。保存するには、Serializableとマークする必要があります。

  3. プロパティを追加します。たとえば、UrlWidthHeightを追加します。

    namespace FormsDemo
    {
      [Serializable]
      public class VideoViewModel : FieldViewModel
      {
    	public string Url { get; set; }
    
    	public int Width { get; set; }
    
    	public int Height {get; set;}
    
    	protected override void InitItemProperties(Item item)
      {
        // on load of the form
        base.InitItemProperties(item);
      
            Url = StringUtil.GetString(item.Fields["Url"]);
    	Width = MainUtil.GetInt(item.Fields["Width"]?.Value, 0);
    	Height = MainUtil.GetInt(item.Fields["Height"]?.Value, 0);
      }
  4. InitItemPropertiesメソッドとUpdateItemFieldsメソッドをオーバーライドします。

    protected override void InitItemProperties(Item item)
    {
    	// on load of the form
    	base.InitItemProperties(item);
    	
    	Url = StringUtil.GetString(item.Fields["Url"]);
    	Width = MainUtil.GetInt(item.Fields["Width"]?.Value, 0);
    	Height = MainUtil.GetInt(item.Fields["Height"]?.Value, 0);
    }
    
    protected override void UpdateItemFields(Item item)
    {
    	// upon save
    	base.UpdateItemFields(item);
    	
    	item.Fields["Url"]?.SetValue(Url, true);
    	item.Fields["Width"]?.SetValue(Width.ToString(CultureInfo.InvariantCulture), true);
    	item.Fields["Height"]?.SetValue(Height.ToString(CultureInfo.InvariantCulture), true);
    }
  5. プロジェクトをビルドし、FormsDemo.dllをSitecore Webサイトのbinフォルダーにデプロイします。

Razorビュー ファイルを作成する

新しいクラスを作成したら、次の手順では、テンプレート (この例ではビデオ要素) をフォームに埋め込むためのRazorビュー ファイルを作成します。

Razorビュー ファイルを作成するには:

  1. たとえば、video要素の場合は、Video.cshtml Razorビュー ファイルを作成します。

    Video.cshtml razor view file.
  2. 前に作成した新しいクラス ライブラリ プロジェクトにrazorビュー ファイルを追加します。Sitecore FormsのデフォルトのRazorビュー ファイルは、Website/Views/FormBuilder/FieldTemplatesに保存されています。たとえば、Video.cshtmlファイルをFormsDemoフォルダーに追加して保存します。

    Views/FormBuilder/FieldTemplates.

フォーム要素ペインのセクションを作成する

手記

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

これで、フォーム要素 ウィンドウに表示されるセクションを追加できます。たとえば、1行テキスト要素には、DetailsValidationStylingAdvanced settingsの各セクションが含まれています。

Single-line text form element.

この例では、video要素について、ユーザーがField name、URL、Width、およびHeightプロパティを設定できるようにする必要があります。

フォーム要素ペインにセクションを追加するには:

  1. Sitecore Rocksで、コア データベースを展開し、すべてのフィールド プロパティ エディターのレイアウト パラメーターが含まれているSettingsフォルダーを右クリックします。 /sitecore/client/Applications/FormsBuilder/Components/Layouts/PropertyGridForm/PageSettings/Settings

  2. Add」をクリックし、「 New item」をクリックします。

  3. Add New Itemダイアログボックスで、Form Parametersテンプレートを検索してクリックし、Videoなどの名前を入力して、「OK」をクリックします。

    Add new item using Form parameters template
  4. 作成したVideoアイテムを右クリックし、AddNew itemの順にクリックします。

  5. カスタム要素の新しいセクションを追加するには、FormSectionテンプレートを検索してクリックします。

    手記

    FormSectionテンプレートは、Speakフォームのセクション視覚化テンプレートであり、セクション エディターとフィールド エディターのレンダリング パラメーターを再利用できます。

  6. 新しいアイテムの名前を入力し、OKをクリックします。たとえば、「 Details 」と入力してDetailsセクションを追加します。

    Add new item for Details section
  7. 作成したDetailsアイテムを右クリックし、AddNew itemの順にクリックします。

    たとえば、ビデオ アイテムのFieldName、Width、Height、およびURLプロパティを設定するには、標準のフォーム要素で使用されているFieldNameアイテムを再利用できます。

  8. FormTextBox Parameters」を検索してクリックし、名前(「Width」など)を入力して「 OK」をクリックします。

    FormTextBox parameters
    手記

    Speak 2.0 parameters を選択する必要があります。

  9. これらの手順を繰り返して、関連するすべてのアイテム (HeightアイテムやURLアイテムなど) を作成します。

    Elements in the Video item shown in the list view.

フィールドエディタのパラメータを設定する

次に、新しく作成した各フィールドエディタのパラメータを設定する必要があります。たとえば、ラベルのテキストと位置を設定できます。

フィールドエディタのパラメータを設定するには:

  1. Widthアイテムを開き、Formセクションに移動します。次のフィールドを編集します。

    • FormLabelForm elementsペインに表示されるテキストボックスラベルを指定します。

    • IsLabelOnTop – 入力の上にラベルを配置する場合に選択します。一貫性を保つために、すべてのフィールド エディターのプロパティでこのチェック ボックスをオンにすることをお勧めします。

    • BindingConfiguration – FormDataプロパティ名と、対応するコンポーネントのバインド可能なプロパティを一覧表示します。左側のペインでは、フィールド モデル プロパティ (プロパティ名がキャメルケースで指定されていることに注意してください) を指定し、右側のウィンドウでは、フィールド モデル プロパティを更新するために読み取るエディター プロパティを指定します。

      Binding configuration
  2. Detailsセクションで、次のフィールドのフィールド エディターを参照します。

    • ConfigurationItem –SpeakExpanderのパラメーターを指定します。 DetailsExpanderアイテムは、次の場所で再利用できます。 sitecore/client/Applications/FormsBuilder/Components/Layouts/PropertyGridForm/PageSettings/Common/Sections

    • ControlDefinitionsForm elementsペインに表示されるフィールドエディタを参照順に指定します。 Fieldnameアイテムは、次の場所で再利用できます。 /sitecore/client/Applications/FormsBuilder/Components/Layouts/PropertyGridForm/PageSettings/Common/Details

  3. ControlDefinitionsフィールドでFieldnameをクリックし、前に作成したWidth、Height、URLの各項目を選択します。

    先端

    すでに設定したセクションを他のエディタからコピーおよび変更できます。

  4. FormSectionテンプレートを使用してセクション項目を作成します。たとえば、Stylingという名前を付けます。

  5. Styling項目を編集するには、Dataセクションで、次のフィールドを編集します。

    • ConfigurationItem – Styling Expanderへの参照を追加します。 /sitecore/client/Applications/FormsBuilder/Components/Layouts/PropertyGridForm/PageSettings/Common/Sections/StylingExpander

    • ControlDefinitions – CSSクラスへの参照を追加します。 /sitecore/client/Applications/FormsBuilder/Components/Layouts/PropertyGridForm/PageSettings/Common/Styling/CssClass

      Control definition

フィールド タイプ アイテムの作成

フィールド エディターのパラメーターを構成したら、カスタム フィールド タイプを作成して、たとえば、フォームにビデオを追加できるようにすることができます。

フィールドタイプアイテムを作成するには:

  1. フォルダに移動し /sitecore/system/Settings/Forms/Field Types/Basic新しいアイテムを追加します。

  2. /System/Forms/Field Typeテンプレートに基づいてアイテムを作成し、名前を入力してInsertをクリックします。たとえば、Video.

  3. Settingsセクションフィールドを編集します。

    • View Path – Razor Viewファイルを指すパスを指定します。たとえば、FormsDemo/Video.

    • Model Type – クラス名を参照するモデルタイプを指定します。たとえば、FormsDemo.VideoViewModel,FormsDemo.

    • Property Editor – 前に作成したアイテムをポイントします。たとえば、Videoアイテムのプロパティエディタを選択します。

      Set allowed validations
  4. Appearanceセクションで、次のフィールドを編集します。

    • IconForm elementsペインに表示されるアイコンを選択します。たとえば、OfficeWhite/32x32/videotape.png.

      手記

      コンテンツ エディターに表示されるアイコンを設定するには、Standard fieldsチェック ボックスがオンになっていることを確認し、_Standard Valuesアイコン フィールド値を白以外のOfficeテーマの対応するアイコンとして設定します Office/32x32/videotape.png

    • BackgroundColorForm elementsペインに表示されるアイコンの背景色を選択します。たとえば、Sky.

  5. Field templateフィールドで、以前に作成したフィールド テンプレートを指定します。たとえば、sitecore/Templates/FormsDemo/Fields/Video.新しいフォームを作成すると、カスタムvideo要素がForm elementsウィンドウで使用できるようになります。

    Video element in Form elements pane

オペレーターのカスタムフィールドタイプを有効にする

新しいフィールドタイプに 条件付きロジックを適用する 場合は、まず関連する演算子に対して条件ロジックを有効にする必要があります。そうしないと、フィールドタイプの条件を編集するときに、演算子のリストが空になります。

カスタムフィールドタイプを登録するには:

  1. Masterデータベースで、/sitecore/system/Settings/Forms/Meta Data/Conditions/Operatorsルートを開きます。

  2. ツリーで、更新する演算子を選択します。

  3. Allowed Field Typesセクションで、新しいフィールドを追加します。

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