Lightning Experience のレコードホームページのコンポーネントの設定
Lightning ページおよび Lightning アプリケーションビルダーで動作するようにコンポーネントを設定したら、次のガイドラインを使用して、Lightning Experience のレコードページで動作するようにコンポーネントを設定します。
レコードページがアプリケーションページと明確に異なる点は、レコードのコンテキストがあるということです。現在のレコードに基づいてコンポーネントにコンテンツを表示するには、インターフェースと属性の組み合わせを使用します。
- コンポーネントをレコードページと他の種別のページの両方で使用できる場合、flexipage:availableForAllPageTypes を実装します。
- コンポーネントがレコードページ専用に設計されている場合は、flexipage:availableForAllPageTypes の代わりに flexipage:availableForRecordHome インターフェースを実装します。
- コンポーネントにレコード ID が必要な場合は、force:hasRecordId インターフェースも実装します。
- コンポーネントにオブジェクトの API 名が必要な場合は、force:hasSObjectName インターフェースも実装します。
force:hasRecordId
レコードページのコンポーネント、カスタムオブジェクトのアクションなど、特定のレコードに関連付けられたコンテキストで呼び出されるコンポーネントで役立ちます。現在表示されているレコードの ID をコンポーネントで取得する場合は、このインターフェースを追加します。
force:hasRecordId インターフェースは、このインターフェースを実装するコンポーネントに対して 2 つのことを行います。
-
recordId という名前の属性をコンポーネントに追加します。この属性は文字列型であり、その値は 18 文字の Salesforce レコード ID (001xx000003DGSWAA4 など) です。これを自分で追加した場合、属性の定義は次のようになります。
1<aura:attribute name="recordId" type="String" /> - Lightning Experience または Salesforce1 のレコードコンテキストでコンポーネントを呼び出す場合、recordId を、表示するレコードの ID に設定します。
recordId 属性を Lightning アプリケーションビルダーに公開しないでください。つまり、この属性をコンポーネントのデザインリソースに配置しないでください。システム管理者がレコード ID を提供するのは望ましくありません。
レコードページにコンポーネントを配置する場合、またはレコードページからコンポーネントをアクションとして呼び出す場合のみ、レコード ID が設定されます。その他の場合 (このコンポーネントをプログラムで別のコンポーネント内に作成する場合など)、レコード ID は設定されないため、コンポーネントでレコード ID を使用しないでください。
force:hasSObjectName
レコードページコンポーネントに役立ちます。現在表示されているレコードのオブジェクトの API 名をコンポーネントで認識する必要がある場合は、このインターフェースを実装します。
このインターフェースは、sObjectName という名前の属性をコンポーネントに追加します。この属性は文字列型であり、その値は Account や myNamespace__myObject__c のようなオブジェクトの API 名です。次に例を示します。
1<aura:attribute name="sObjectName" type="String" />sObjectName 属性は、レコードページにコンポーネントを配置した場合にのみ入力されます。その他の場合 (このコンポーネントをプログラムで別のコンポーネント内に作成する場合など)、sObjectName は入力されないため、コンポーネントでこれを使用しないでください。