問題
- 別のサイトにある既存のフォーム、要素セット、データプロバイダを再作成することなく使用したいのですが。 どのような選択肢があるのか?
Environment
- Liferay DXP 7.1+
解決策
フォーム
オプション1: フォームは、 Global サイトから以下の方法で共有することができます:
- グローバルサイト(コンテンツ > フォーム)にフォームを作成する。
- 他のサイトへ移動する(例:Liferay DXP)
- Formsポートレットをページに配置する
- ポートレットの「設定」メニューに移動する
- スコープ」タブに移動する
- "グローバル "を選択する
結果 グローバルサイトで作成したフォームを表示することができるようになります。
オプション2: フォームのURLで表示する。
フォームを公開すると、LiferayからそのフォームにアクセスするためのURLが送られてきます(例えば、 http://localhost:8080/web/forms/shared/-/form/33755)。 そのリンクは、そのフォームが属するサイトを示すものではありません。 DXP 7.1、7.2、7.3が提供する一部のページタイプのターゲットリンクとして使用することができます:
- URLへリンク
- 埋め込み(「埋め込み」ページタイプはiframeを使用するため、ご注意ください。)
以下の手順で、これらの方法を試してみてください:
- サイト内に新しいページを作成する
- 埋め込み/URLへのリンク」タイプを選択する
- ページ名を付けて、「保存」をクリックします
- 次のウィンドウで、「URL」に「FormのURL」を入力します。
結果:
- 埋め込み型」を選択した場合は、新しいページにフォームが表示されます。
- URL へのリンク」タイプでは、新しいページに移動すると、ブラウザのタブにフォームが表示されます。
利点があります:
- パーミッションシステムを活用することができます。
- ページはナビゲーションメニューに追加でき、あたかも「ネイティブ」のようにサイト内に表示されます。
同時に、すべての回答はフォームに関連付けられ、したがって、そのフォームが存在するサイトに関連付けられることに注意してください。
要素セット
要素セットに関しては、残念ながらサイト間で共有することが現状では限界です。 この問題を回避するには、必要な要素セットを含む「テンプレートフォーム」をエクスポートし、別のサイトでインポートすることが考えられます。 この機能については、すでに機能要望が出されています。 このナレッジベースの記事の詳細を参照してください:フォームの要素セットをエクスポート/インポートするにはどうすればよいですか?
データプロバイダー
データプロバイダー は、グローバルサイトからも共有可能です。 グローバルスコープで作成したデータプロバイダを使用するオプションは、フォーム自体を作成する際に表示されます。 以下に例を示します。
- グローバルサイトにデータプロバイダを作成する
- 別サイトへの切り替え(例:Liferay DXP)
- コンテンツへ移動 > フォーム
- 新しいフォームを作成する
- フォームに「一覧から選択」フィールドを追加する
- フィールド構成で、「リスト作成メニュー」の下にある「データプロバイダーから」オプションを選択します
結果をご覧ください: データプロバイダーの選択」ドロップダウンに、グローバルサイトのデータプロバイダーが表示されることに注意してください。
追加情報
- 機能要求のチケットが上がっています: LPS-79792 ポートレットのエクスポートで、ユーザーがエレメントセットをエクスポート/インポートできるようにしました。