例:フォームルールでの非表示フィールドの使用
[詳細設定]タブで[フォーム]フィールドを非表示に設定します。
このフォームには非表示のフィールドがあります。 データプロバイダーに入力値として渡すことができるように、サイトのID番号を保持しています。
この例に従うためには、まず[データプロバイダーシステム設定]エントリでローカルネットワークアクセスを有効にする必要があります。 詳細は、 ローカルネットワーク上のデータへのアクセスの有効化 を参照してください。
この例では、2つのデータプロバイダーと、4つのフィールドと3つのフォームルールを持つフォームを作成する必要があります。 以下の表は、その要素の概要を示したものです。
Liferayフォーム要素 | 要素ラベル | 説明 |
---|---|---|
データ提供者 | グループユーザーの取得 | サイト/グループのユーザーを取得し、その電子メールアドレスのリストを提供する。 |
データ提供者 | ユーザーにメールで知らせる | 選択された電子メールアドレスでユーザーを取得し、姓名を入力します。 |
フォームフィールド | 非表示グループID | 非表示の数値フィールドを使用して、現在のサイトのグループIDを保持します。 |
フォームフィールド | Who are you? | データプロバイダーから返されたEメールアドレスを表示する[リストから選択]フィールドを使用します。 |
フォームフィールド | 名 | ユーザーの名前には、テキストフィールドを使用します。 |
フォームフィールド | 姓 | ユーザーの姓にはテキストフィールドを使用します。 |
フォームルール | 適切ではない | 非表示グループIDフィールドが空でない場合は、[リストから選択]フィールドにサイトのユーザーのメールアドレスを自動入力します。 |
フォームルール | 適切ではない | [Who are you?] フィールドが空でなければ、データ・プロバイダーから取得した姓名のフィールドを自動入力します。 |
フォームルール | 適切ではない | [Who are you?] フィールドが空の場合は、ユーザーが手動でデータを入力できるように、名前フィールドを有効にします。 条件が満たされておらず、姓と名のフィールドがデータプロバイダーによって自動入力されている場合、これらのフィールドはフォーム上では無効になります。 |
この例を構成するには、
-
これらの設定でデータプロバイダーを構成します。
-
名前: グループユーザーを取得
-
URL: http://localhost:8080/api/jsonws/user/get-group-users/group-id/
groupId
は、データプロバイダーの入力パラメーターとして渡されます。 この例では、グループIDを入力するために非表示フォームフィールドを使用します。 -
ユーザー名 : test@liferay.com(または管理者の電子メールアドレス)
-
パスワード: [ユーザーのパスワードを入力]
-
入力:
- ラベル : グループID
- パラメータ : groupId
- タイプ: 数字
-
出力:
- ラベル: メールアドレス
- パス: $..emailAddress
- タイプ: リスト
データプロバイダーを保存します。
-
-
この設定で別のデータプロバイダーを設定します。
-
名前: 電子メールでユーザーを取得
-
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
- タイプ: テキスト
データプロバイダーを保存します。
-
-
新しいフォームを作成し、これらのフィールドを追加します。
- 数値フィールド: 非表示グループID
-
初期値: [サイトID (例:20123)]
サイト設定でサイトIDを探す → サイト設定
-
- リストから選択: Who are you?
- リストの作成: 自動補完から
- テキストフィールド: 名
- テキストフィールド: 姓
フォームにタイトルをつけて保存します。
- 数値フィールド: 非表示グループID
-
フォームの[ルール]タブを開き、 Who are You? フィールドのオプションのリストを自動入力するルールを作成します。
- CONDITION:
- If Hidden Group ID
Is Not Empty
- If Hidden Group ID
- ACTION:
- Do
Autofill
From Data Provider Get Group Users となります。- データプロバイダーの入力:
groupId
→ 非表示グループID - データプロバイダーの出力:
Email Address
→ Who are You?
- データプロバイダーの入力:
- Do
ルールの保存
- CONDITION:
-
フォームの[ルール]タブを開き、 Who are You? フィールドのオプションのリストを自動入力するルールを作成します。
- CONDITION:
- If Who are You?
Is Not Empty
- If Who are You?
- ACTION:
自動入力
をデータプロバイダーからして、 Emailでユーザーを取得します- データ プロバイダーの入力:
emailAddress
→ Who are you? - データ プロバイダーの出力::
First Name
→ First Name - データプロバイダーの出力:
姓
→ 姓
- データ プロバイダーの入力:
ルールの保存
- CONDITION:
-
フォームの[ルール]タブに移動し、メールアドレスが選択されていない場合に名前フィールドのみを有効にするルールを作成します。
- CONDITION:
- If Who are You?
Is Empty
- If Who are You?
- ACTION:
- Do
Enable
First Name - Do
Enable
Last Name
- Do
ルールの保存
- CONDITION:
-
フォームを保存して公開します。 ルールを保存してもフォームは保存されなかったため、[フォーム]タブに戻り、 [保存] をクリックし、フォームがまだ公開されていない場合は 公開 します。
フォームをテストするには、専用のURLにアクセスし、メールアドレスを選択します。 以下の動作に注意してください。
- Who are you? フィールドを使用して、現在のサイトに所属するユーザーのリストからメールアドレスを選択します。 このリストは、データプロバイダーがJSONウェブサービス get-group-users を呼び出すことで入力されます。
- セレクタでメールアドレスを選択すると、[名]と[姓]の欄が自動入力され、これらの欄は編集できないようになっています。
- Who are you? フィールドを空白にすると(例: 選択肢を選ぶ が表示される)、両方の名前フィールドが有効になり、ユーザーが直接データを入力できるようになります。