例:フォームルールでの非表示フィールドの使用¶
[詳細設定]タブで[フォーム]フィールドを非表示に設定します。
このフォームには非表示のフィールドがあります。 データプロバイダーに入力値として渡すことができるように、サイトの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}
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/{emailAddress}
Liferay InstanceのID(例:20099)を取得する必要があります。 コントロールパネルの → 仮想インスタンスに表示されるインスタンスIDです。
ユーザー名 : test@liferay.com(または管理者の電子メールアドレス)
パスワード: [ユーザーのパスワードを入力]
入力:
ラベル: メールアドレス
パラメータ: emailAddress
タイプ: テキスト
出力:
ラベル: 名
パス: $ .firstName
タイプ: テキスト
プラス記号をクリックして、別の出力を追加します。
出力:
ラベル: 姓
パス: $ .lastName
タイプ: テキスト
データプロバイダーを保存します。
新しいフォームを作成し、これらのフィールドを追加します。
数値フィールド: 非表示グループID
初期値: [サイトID (例:20123)]
サイト設定でサイトIDを探す → サイト設定
リストから選択: Who are you?
リストの作成: 自動補完から
テキストフィールド: 名
テキストフィールド: 姓
フォームにタイトルをつけて保存します。
フォームの[ルール]タブを開き、 Who are You? フィールドのオプションのリストを自動入力するルールを作成します。
CONDITION:
If Hidden Group ID
Is Not Empty
ACTION:
Do
Autofill
From Data Provider Get Group Users となります。データプロバイダーの入力:
groupId
→ 非表示グループIDデータプロバイダーの出力:
Email Address
→ Who are You?
ルールを保存します。
フォームの[ルール]タブを開き、 Who are You? フィールドのオプションのリストを自動入力するルールを作成します。
CONDITION:
If Who are You?
Is Not Empty
ACTION:
自動入力
をデータプロバイダーからして、 Emailでユーザーを取得しますデータ プロバイダーの入力:
emailAddress
→ Who are you?データ プロバイダーの出力::
First Name
→ First Nameデータプロバイダーの出力:
姓
→ 姓
ルールの保存
フォームの[ルール]タブに移動し、メールアドレスが選択されていない場合に名前フィールドのみを有効にするルールを作成します。
CONDITION:
If Who are You?
Is Empty
ACTION:
Do
Enable
First NameDo
Enable
Last Name
ルールの保存
フォームを保存して公開します。 ルールを保存してもフォームは保存されなかったため、[フォーム]タブに戻り、 [保存] をクリックし、フォームがまだ公開されていない場合は 公開 します。
フォームをテストするには、専用のURLにアクセスし、メールアドレスを選択します。 以下の動作に注意してください。
Who are you? フィールドを使用して、現在のサイトに所属するユーザーのリストからメールアドレスを選択します。 このリストは、データプロバイダーがJSONウェブサービス get-group-users を呼び出すことで入力されます。
セレクタでメールアドレスを選択すると、[名]と[姓]の欄が自動入力され、これらの欄は編集できないようになっています。
Who are you? フィールドを空白にすると(例: 選択肢を選ぶ が表示される)、両方の名前フィールドが有効になり、ユーザーが直接データを入力できるようになります。