レコード固有のアクションのコンポーネントの設定
-
recordId という名前の属性をコンポーネントに追加します。この属性は文字列型であり、その値は 18 文字の Salesforce レコード ID (001xx000003DGSWAA4 など) です。これを自分で追加した場合、属性の定義は次のようなマークアップになります。
- Lightning Experience または Salesforce1 のレコードコンテキストでコンポーネントを呼び出す場合、recordId を、表示するレコードの ID に設定します。
この動作は、プログラミング言語のインターフェースで予想される動作とは異なります。これは、force:hasRecordId が マーカーインターフェースであるためです。マーカーインターフェースは、インターフェースの動作をコンポーネントに追加するよう伝える、コンポーネントのコンテナへの信号です。
recordId 属性は、レコードのコンテキストでコンポーネントを配置または呼び出す場合にのみ設定されます。たとえば、レコードページにコンポーネントを配置する場合、またはレコードページやオブジェクトホームからコンポーネントをアクションとして呼び出す場合などがこれに該当します。その他の場合 (このコンポーネントをプログラムで別のコンポーネント内に作成する場合など)、recordId は設定されないため、コンポーネントでこれを使用しないでください。
レコード固有のアクションのコンポーネントの例
この拡張の例では、取引先レコードの詳細ページからカスタムアクションとして呼び出されるように設計されたコンポーネントを示します。コンポーネントを作成したら、取引先オブジェクトのカスタムアクションを作成し、取引先ページレイアウトに追加する必要があります。アクションを使用した開かれたコンポーネントは、次のようなアクションパネルに表示されます。
コンポーネント定義は、まず force:lightningQuickActionWithoutHeader と force:hasRecordId の両方のインターフェースで実装されます。最初のインターフェースは、コンポーネントをアクションとして使用できるようにし、標準コントロールが表示されないようにします。2 番目のインターフェースは、レコードのコンテキストでコンポーネントが呼び出されたときにインターフェースのレコード ID 属性と値の自動割り当て動作を追加します。
- account — init ハンドラで読み込まれた完全な取引先レコードを保持
- newContact — フォーム項目の値を取得するために使用される空の取引先責任者
コンポーネントのコントローラには、3 つのアクションハンドラの目的の��べてのコードがあります。
最初のアクションハンドラ doInit は init ハンドラです。このハンドラのジョブは、force:hasRecordId インターフェースで提供されるレコード ID を使用して、完全な取引先レコードを読み込むことです。このコンポーネントが別のオブジェクト (リード、商談、またはカスタムオブジェクト) のアクションで使用されないようにする手段は講じられていません。この場合、doInit ではレコードの読み込みに失敗しますが、フォームは表示されます。
- 新しい取引先責任者を保存するサーバアクションを準備をする。
- サーバがアクションを完了したときのためにレスポンスハンドラと呼ばれるコールバック関数を定義する。レスポンスハンドラについては、後ほど説明します。
- サーバアクションをキューに追加する。
- force:closeQuickAction イベントを起動してアクションパネルを閉じる。
- force:showToast イベントを起動して、取引先責任者が作成されたことを示す「トースト」メッセージを表示する。
- レコードページに自身を更新するように通知する force:refreshView イベントを起動して、レコードページを更新する。
handleCancel アクションハンドラは、force:closeQuickAction ��ベントを起動してアクションパネルを閉じます。
ここに記載されているコンポーネントヘルパーは、その用途を十分に説明できるだけの最小限のヘルパーです。本番品質のフォーム検証コードでは、さらに多くの作業が必要になります。
最後に、このコンポーネントのサーバ側コントローラとして使用される Apex クラスは、わかりやすいように意図的に簡略化されています。