ウォークスルー

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

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

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

  • 新しいフィールドテンプレート。
  • FieldViewModelクラス(整数フィールドや複数行テキストフィールドなどの単純なフィールドタイプの場合)から派生する新しいクラス、またはドロップダウンリストのようなリストフィールドタイプに対してListViewModelクラスから派生する新しいクラスです。
  • レイザービューファイル。
  • razor viewファイルを使ってレンダリングを行うフィールドタイプのアイテムです。

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

このウォークスルーでは、動画用のカスタムフォーム要素を作成する手順を説明します。以下の方法を説明しています:

  • フィールドテンプレートを作成する
  • 新しいクラスを作成する
  • Razor Viewファイルを作成する
  • フォーム要素のパネルのセクションを作成します
  • フィールドエディタパラメータの設定
  • フィールドタイプの項目を作成する
  • オペレーター用のカスタムフィールドタイプを有効にする

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

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

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

  1. コンテンツエディターで sitecore/Templates に移動し、新しいフォルダ(例えば Fieldsというフォルダ)を作成します。
  2. コンテンツツリーで新しいフォルダをクリックし、 フォルダタブで新しいテンプレート」をクリックします。
  3. 「名前選択」ページの「名前」欄でテンプレートの名前を入力し、ベーステンプレート欄で「フィールドテンプレート(Templates/System/Forms/Fields/Field)」を選択し、「次へ」をクリックします。
  4. ロケーションページで、テンプレートを保存したいフォルダを選択し、「次へ」をクリックし、「閉じる」をクリックしてください。
  5. コンテンツツリーで新しいテンプレートを選択し、 ビルダー タブをクリックします。
  6. 以下のテンプレートフィールドを追加します:
    • URL(単行テキスト)
    • 幅(整数)
    • 高さ(整数)
  7. 各テンプレートフィールドの「データ」セクションの**「コンテンツ**」タブで「共有」チェックボックスを選択し、「メッセージ」ダイアログで変更を確認します。
  8. コンテンツツリーで新しいテンプレートをクリックし、リボンの上で オプション タブをクリックし、その後標準 をクリックします。
  9. リボン上で 「保存 」をクリックしてテンプレートを保存します。

!注フィールドテンプレートの標準値を作成することが重要です。なぜなら、標準値はフォーム要素パネルからフォームキャンバスに追加する際にデフォルトのフィールド値として使われるからです。フィールドテンプレートに標準値がない場合、その要素をフォームにドロップすることはできません。

新しいクラスを作成する

次に、ビューモデルのロジックを作成し、FieldViewModelクラスから派生する新しいクラスを作成します。既存のフォーム要素をカスタマイズし、その機能を拡張してカスタム要素を作成するには、対応する要素クラスから継承する必要があります。例えば、新しいリスト要素を作成したい場合は、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ウェブサイトのbinフォルダにデプロイします。

Razor Viewファイルを作成する

新しいクラスを作成した後、次のステップはrazor viewファイルを作成し、テンプレートをフォームに埋め込むことです。この例ではビデオ要素です。

Razor Viewファイルを作成するには:

  1. 例えば、ビデオ要素については、Video.cshtml razor viewファイルを作成します:

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

    Views/FormBuilder/FieldTemplates.

フォーム要素のパネルのセクションを作成します

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

フォーム要素のパネルに表示されるセクションを追加できます。例えば、単行テキスト要素には**詳細、**検証スタイリング詳細設定のセクションが含まれています。

Single-line text form element.

この例では、ビデオ要素について、ユーザーがフィールド名、URL、幅、高さのプロパティを設定できるようにしたいのです。

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

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

  2. 追加をクリックしてから****「新しい項目」をクリックしてください。

  3. 新しいアイテムを追加 」ダイアログボックスで、Form Parametersテンプレートを検索してクリックし、名前を入力してください。例えば、Video、、そしてOKをクリックします。

    Add new item using Form parameters template
  4. 作成したVideoアイテムを右クリックして「 追加新しいアイテム」をクリックします。

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

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

  6. 新しいアイテムの名前を入力し、「 **OK」**をクリックします。例えば、「 Details 」と入力すると 「詳細 」セクションを追加できます。

    Add new item for Details section
  7. 作成したDetailsアイテムを右クリックして「 追加新しいアイテム」をクリックします。

    例えば、動画アイテムのFieldName、Width、Height、URLプロパティを設定するには、箱から出したフォーム要素で使われているFieldNameアイテムを再利用できます。

  8. Search FormTextBox Parametersをクリックし、名前(例えば幅)を入力してOKをクリックします。

    FormTextBox parameters

    !注Speak 2.0パラメータを選択してください。

  9. これらの手順を繰り返して、例えばHeightやURL項目など、関連するすべての項目を作成します。

    Elements in the Video item shown in the list view.

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

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

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

  1. Width項目を開き、フォームのセクションに移動します。以下のフィールドを編集してください:

    • FormLabelフォーム要素 ペインに表示されるテキストボックスラベルを指定します。

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

    • BindingConfiguration – FormDataプロパティ名と対応するコンポーネントのバインド可能プロパティを一覧にします。左のペインはフィールドモデルプロパティを指定します(プロパティ名はcamelCaseで表示されています)。右ペインはフィールドモデルプロパティを更新するためにどのエディタプロパティを読み取るかを指定します。

      Binding configuration
  2. 詳細セクションでは、以下のフィールドエディタを参照してください:

    • ConfigurationItem – Speak Expanderのパラメータを指定します。 DetailsExpander アイテムは以下で再利用できます: sitecore/client/Applications/FormsBuilder/Components/Layouts/PropertyGridForm/PageSettings/Common/Sections
    • ControlDefinitionsForm要素 パネルに表示されるフィールドエディタを参照順に指定してください。 Fieldname アイテムは以下で再利用できます: /sitecore/client/Applications/FormsBuilder/Components/Layouts/PropertyGridForm/PageSettings/Common/Details
  3. ControlDefinitionsフィールドで**「Fieldname**」をクリックし、先に作成したWidth、Height、URL項目を選択します。

    !ヒント他の編集者から既に設定したセクションをコピー・修正できます。

  4. 例えば、FormSectionテンプレートを使ってセクションアイテムを作成し、名前をStylingしてください。

  5. Styling項目を編集するには、データセクションで以下のフィールドを編集してください:

    • ConfigurationItem – スタイリングエクスパンダーへの参照を追加してください: /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テンプレートを基にアイテムを作成し、名前を入力して挿入をクリックします。例えば、Video

  3. 設定セクションのフィールドを編集:

    • View Path – Razor Viewファイルに向かうパスを指定します。例えば、FormsDemo/Video。

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

    • プロパティエディター – 先に作成したアイテムを指します。例えば、Videoアイテムのプロパティエディターを選択します。

      Set allowed validations
  4. 外観セクションでは、以下のフィールドを編集してください:

    • アイコンフォーム要素 のペインに表示されるアイコンを選択します。例えば、OfficeWhite/32x32/videotape.png.

      _Standard Valuesのアイコンフィールド値を非白のOfficeテーマOffice/32x32/videotape.pngに対応するアイコンに設定してください

    • BackgroundColorフォーム要素 パネルに表示されるアイコンの背景色を選択します。例えば、Sky

  5. フィールドテンプレートフィールドで、以前作成したフィールドテンプレートを指定します。例えば、sitecore/Templates/FormsDemo/Fields/Video。新しいフォームを作成すると、フォーム要素ペインでカスタムビデオ要素が利用可能になります:

    Video element in Form elements pane

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

新しいフィールドタイプに 条件付き論理を適用 したい場合は、まず該当する演算子で条件付けを有効にする必要があります。そうしないと、フィールドタイプの条件を編集すると演算子のリストが空になります。

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

  1. マスターデータベースで、 /sitecore/system/Settings/Forms/Meta Data/Conditions/Operators ルートを開きます。
  2. ツリーで更新したいオペレーターを選択します。
  3. 「許可フィールドタイプ」セクションで新しいフィールドを追加します。
この記事を改善するための提案がある場合は、 お知らせください!