oo

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

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

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

このフォームには非表示のフィールドがあります。 データプロバイダーに入力値として渡すことができるように、サイトの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 は、データプロバイダーの入力パラメーターとして渡されます。 この例では、グループ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/

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

関連コンテンツ

Capability:
Feature: