この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

レコード固有のアクションのコンポーネントの設定

force:hasRecordId インターフェースを Lightning コンポーネントに追加すると、現在のレコードの ID をコンポーネントに割り当てることができます。現在のレコード ID は、Lightning Experience または Salesforce1 のオブジェクト固有のカスタムアクションやアクション上書きなどとして、コンポーネントを Lightning レコードページで使用する場合に便利です。
force:hasRecordId インターフェースは、このインターフェースを実装するコンポーネントに対して 2 つのことを行います。
  • recordId という名前の属性をコンポーネントに追加します。この属性は文字列型であり、その値は 18 文字の Salesforce レコード ID (001xx000003DGSWAA4 など) です。これを自分で追加した場合、属性の定義は次のようなマークアップになります。

    コンポーネントで force:hasRecordId を実装する場合、recordId 属性をコンポーネントに自分で追加する必要はありません。追加する場合は、属性のアクセスレベルまたは型を変更しないでください。変更すると、コンポーネントでランタイムエラーが発生します。

    メモ

  • Lightning Experience または Salesforce1 のレコードコンテキストでコンポーネントを呼び出す場合、recordId を、表示するレコードの ID に設定します。

この動作は、プログラミング言語のインターフェースで予想される動作とは異なります。これは、force:hasRecordIdマーカーインターフェースであるためです。マーカーインターフェースは、インターフェースの動作をコンポーネントに追加するよう伝える、コンポーネントのコンテナへの信号です。

recordId 属性は、レコードのコンテキストでコンポーネントを配置または呼び出す場合にのみ設定されます。たとえば、レコードページにコンポーネントを配置する場合、またはレコードページやオブジェクトホームからコンポーネントをアクションとして呼び出す場合などがこれに該当します。その他の場合 (このコンポーネントをプログラムで別のコンポーネント内に作成する場合など)、recordId は設定されないため、コンポーネントでこれを使用しないでください。

レコード固有のアクションのコンポーネントの例

この拡張の例では、取引先レコードの詳細ページからカスタムアクションとして呼び出されるように設計されたコンポーネントを示します。コンポーネントを作成したら、取引先オブジェクトのカスタムアクションを作成し、取引先ページレイアウトに追加する必要があります。アクションを使用した開かれたコンポーネントは、次のようなアクションパネルに表示されます。QuickContact アクションパネル

コンポーネント定義は、まず force:lightningQuickActionWithoutHeaderforce:hasRecordId の両方のインターフェースで実装されます。最初のインターフェースは、コンポーネントをアクションとして使用できるようにし、標準コントロールが表示されないようにします。2 番目のインターフェースは、レコードのコンテキストでコンポーネントが呼び出されたときにインターフェースのレコード ID 属性と値の自動割り当て動作を追加します。

quickContact.cmp
コンポーネントでは、メンバー変数として使用される 3 つの属性が定義されます。
  • account — init ハンドラで読み込まれた完全な取引先レコードを保持
  • newContact — フォーム項目の値を取得するために使用される空の取引先責任者
残りのコンポーネント定義は、必須項目が空である場合や、電話項目が指定のパターンに一致していない場合に項目に関するエラーを表示する標準形式です。

コンポーネントのコントローラには、3 つのアクションハンドラの目的の��べてのコードがあります。

quickContactController.js

最初のアクションハンドラ doInit は init ハンドラです。このハンドラのジョブは、force:hasRecordId インターフェースで提供されるレコード ID を使用して、完全な取引先レコードを読み込むことです。このコンポーネントが別のオブジェクト (リード、商談、またはカスタムオブジェクト) のアクションで使用されないようにする手段は講じられていません。この場合、doInit ではレコードの読み込みに失敗しますが、フォームは表示されます。

handleSaveContact アクションハンドラは、ヘルパー関数をコールしてフォームを検証します。フォームが有効でない場合、項目レベルのエラーが表示されます。フォームが有効であった場合、アクションハンドラは次の作業を行います。
  • 新しい取引先責任者を保存するサーバアクションを準備をする。
  • サーバがアクションを完了したときのためにレスポンスハンドラと呼ばれるコールバック関数を定義する。レスポンスハンドラについては、後ほど説明します。
  • サーバアクションをキューに追加する。
サーバアクションのレスポンスハンドラ自体はほとんど作業をしません。サーバアクションが成功すると、レスポンスハンドラは次の作業を行います。
  • force:closeQuickAction イベントを起動してアクションパネルを閉じる。
  • force:showToast イベントを起動して、取引先責任者が作成されたことを示す「トースト」メッセージを表示する。
  • レコードページに自身を更新するように通知する force:refreshView イベントを起動して、レコードページを更新する。
更新イベントに対応して取引先責任者のリストが更新されると、リストの最後の項目に新しいレコードが表示されます。

handleCancel アクションハンドラは、force:closeQuickAction ��ベントを起動してアクションパネルを閉じます。

ここに記載されているコンポーネントヘルパーは、その用途を十分に説明できるだけの最小限のヘルパーです。本番品質のフォーム検証コードでは、さらに多くの作業が必要になります。

quickContactHelper.js

最後に、このコンポーネントのサーバ側コントローラとして使用される Apex クラスは、わかりやすいように意図的に簡略化されています。

QuickContactController.apxc
一方のメソッドは、レコード ID に基づいて取引先を取得します。他方のメソッドは、新規取引先責任者レコードを取引先に割り当て、データベースに保存します。