Documentation

例:フォームルールでの非表示フィールドの使用

[詳細設定]タブで[フォーム]フィールドを非表示に設定します。

詳細設定を使用してフィールドを非表示にします。

このフォームには非表示のフィールドがあります。 データプロバイダーに入力値として渡すことができるように、サイトのID番号を保持しています。

フォームには、データプロバイダーに情報を渡すための隠しフィールドが含まれています。

この例に従うためには、まず[データプロバイダーシステム設定]エントリでローカルネットワークアクセスを有効にする必要があります。 詳細は、 ローカルネットワーク上のデータへのアクセスの有効化 を参照してください。

この例では、2つのデータプロバイダーと、4つのフィールドと3つのフォームルールを持つフォームを作成する必要があります。 以下の表は、その要素の概要を示したものです。

Liferayフォーム要素

要素ラベル

説明

データプロバイダー

グループユーザーの取得

サイト/グループのユーザーを取得し、その電子メールアドレスのリストを提供する。

データプロバイダー

ユーザーにメールで知らせる

選択された電子メールアドレスでユーザーを取得し、姓名を入力します。

フォームフィールド

非表示グループID

非表示の数値フィールドを使用して、現在のサイトのグループIDを保持します。

フォームフィールド

Who are you?

データプロバイダーから返されたEメールアドレスを表示する[リストから選択]フィールドを使用します。

フォームフィールド

ユーザーの名前には、テキストフィールドを使用します。

フォームフィールド

ユーザーの姓にはテキストフィールドを使用します。

フォームルール

適切ではない

非表示グループIDフィールドが空でない場合は、[リストから選択]フィールドにサイトのユーザーのメールアドレスを自動入力します。

フォームルール

適切ではない

Who are you?] フィールドが空でなければ、データ・プロバイダーから取得した姓名のフィールドを自動入力します。

フォームルール

適切ではない

Who are you?] フィールドが空の場合は、ユーザーが手動でデータを入力できるように、名前フィールドを有効にします。 条件が満たされておらず、姓と名のフィールドがデータプロバイダーによって自動入力されている場合、これらのフィールドはフォーム上では無効になります。

この例を構成するには、

  1. これらの設定でデータプロバイダーを構成します。

    • 名前: グループユーザーを取得

    • URL: http://localhost:8080/api/jsonws/user/get-group-users/group-id/{groupId}

      groupId は、データプロバイダーの入力パラメーターとして渡されます。 この例では、グループIDを入力するために非表示フォームフィールドを使用します。

    • ユーザー名 test@liferay.com(または管理者の電子メールアドレス)

    • パスワード: [ユーザーのパスワードを入力

    • 入力:

      • ラベル : グループID

      • パラメータ : groupId

      • タイプ: 数字

    • 出力:

      • ラベル: メールアドレス

      • パス: $..emailAddress

      • タイプ: リスト

    データプロバイダーを保存します。

  2. この設定で別のデータプロバイダーを設定します。

    • 名前: 電子メールでユーザーを取得

    • URL: http://localhost:8080/api/jsonws/user/get-user-by-email-address/company-id/20099/email-address/{emailAddress}

      Liferay InstanceのID(例:20099)を取得する必要があります。 コントロールパネルの → 仮想インスタンスに表示されるインスタンスIDです。

    • ユーザー名 : test@liferay.com(または管理者の電子メールアドレス)

    • パスワード: [ユーザーのパスワードを入力

    • 入力:

      • ラベル: メールアドレス

      • パラメータ: emailAddress

      • タイプ: テキスト

    • 出力:

      • ラベル:

      • パス: $ .firstName

      • タイプ: テキスト

    プラス記号をクリックして、別の出力を追加します。

    • 出力:

      • ラベル:

      • パス: $ .lastName

      • タイプ: テキスト

    データプロバイダーを保存します。

  3. 新しいフォームを作成し、これらのフィールドを追加します。

    • 数値フィールド: 非表示グループID

      • 初期値: [サイトID (例:20123)]

        サイト設定でサイトIDを探す → サイト設定

    • リストから選択: Who are you?

      • リストの作成: 自動補完から

    • テキストフィールド:

    • テキストフィールド:

    フォームにタイトルをつけて保存します。

    フォームには4つのフィールドがあります。

  4. フォームの[ルール]タブを開き、 Who are You? フィールドのオプションのリストを自動入力するルールを作成します。

    • CONDITION:

      • If Hidden Group ID Is Not Empty

    • ACTION:

      • Do Autofill From Data Provider Get Group Users となります。

        • データプロバイダーの入力: groupId非表示グループID

        • データプロバイダーの出力: Email AddressWho are You?

    ルールを保存します。

    サイトユーザーのメールアドレスを入力してください。

  5. フォームの[ルール]タブを開き、 Who are You? フィールドのオプションのリストを自動入力するルールを作成します。

    • CONDITION:

      • If Who are You? Is Not Empty

    • ACTION:

      • 自動入力をデータプロバイダーからして、 Emailでユーザーを取得します

        • データ プロバイダーの入力:emailAddressWho are you?

        • データ プロバイダーの出力:: First NameFirst Name

        • データプロバイダーの出力:

    ルールの保存

    選択されたEメールアドレスから名前欄を自動入力する。

  6. フォームの[ルール]タブに移動し、メールアドレスが選択されていない場合に名前フィールドのみを有効にするルールを作成します。

    • CONDITION:

      • If Who are You? Is Empty

    • ACTION:

      • Do Enable First Name

      • Do Enable Last Name

    ルールの保存

    Eメールが選択されていない場合は、名前のフィールドがユーザー入力可能な状態になっています。

  7. フォームを保存して公開します。 ルールを保存してもフォームは保存されなかったため、[フォーム]タブに戻り、 [保存] をクリックし、フォームがまだ公開されていない場合は 公開 します。

フォームをテストするには、専用のURLにアクセスし、メールアドレスを選択します。 以下の動作に注意してください。

  • Who are you? フィールドを使用して、現在のサイトに所属するユーザーのリストからメールアドレスを選択します。 このリストは、データプロバイダーがJSONウェブサービス get-group-users を呼び出すことで入力されます。

  • セレクタでメールアドレスを選択すると、[名]と[姓]の欄が自動入力され、これらの欄は編集できないようになっています。

  • Who are you? フィールドを空白にすると(例: 選択肢を選ぶ が表示される)、両方の名前フィールドが有効になり、ユーザーが直接データを入力できるようになります。