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