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

レコードの作成

ユーザがレコードを作成できるフォームを作成するための最も簡単な方法は、lightning:recordForm を使用することです。フォームのレイアウトをカスタマイズしたり、カスタマイズ値を事前に読み込んだりしたい場合には、lightning:recordEditForm を使用してください。フォームベースのコンポーネントではできないカスタマイズが必要な場合には、force:recordDataを使用してください。

lightning:recordForm を使用したレコードの作成

lightning:recordForm を使用してレコードを作成するには、recordId 属性を除外します。

次の例では、項目のリストを持つ取引先レポートを作成するためのフォームを表示しています。フォームの一番下には、[キャンセル] ボタンと [保存] ボタンがあります。

レコードが正常に保存されると、鉛筆アイコンが表示され、インライン編集が可能なことを示します。このビューは、ページを更新または再読み込みするまで表示され続けます。更新または再読み込みを行うと、データを持たないレコード項目が再表示され、新しいレコードを作成できるようになります。

または、[Full] レイアウト種別を使用して、完全なレイアウトからすべての項目を読み込んで、レコードを作成するためのフォームを作成します。columns 属性は、レコード項目を同じ幅の 2 つの列に表示します。

lightning:recordForm でのエラー処理のカスタマイズ

保存中にエラーが発生すると、lightning:recordForm はフォームの一番上にエラーメッセージを表示します。onerror イベントハンドラを使用して、追加のエラー処理を定義できます。

次の例では、エラーが返されるとトーストメッセージを表示しています。

エラーメッセージを返すには、event.getParam("message") を使用します。

レコードが正常に保存された場合のフォーム動作をカスタマイズするには、onsuccess イベントハンドラを使用します。

フォームの表示時にカスタムレイアウトを使用したり、カスタムフィールド値を読み込んだりするには、次のセクションで説明する lightning:recordEditForm コンポーネントを使用します。

lightning:recordEditForm を使用したカスタムレイアウトレコードの作成

フォーム項目のカスタムレイアウトを指定するには、lightning:recordEditForm コンポーネントを使用します。

レコード項目種別に基づいて入力コントロールを表示する lightning:inputField に項目を渡します。

次の例では、Lightning Design System で Grid ユーティリティクラスを使用して、カスタムレイアウトを作成しています。

サーバエラーが発生すると、lightning:recordEditForm はフォーム項目の上にエラーメッセージを表示します。自動エラー処理を有効にするには、lightning:messages コンポーネントを使用します。もしくは、onerror イベントハンドラを使用して、エラー処理方法を定義します。

lightning:recordForm にはなくて lightning:recordEditForm だけにある、もう 1 つの機能は、次のセクションで説明するプリセットカスタム項目値です。

項目値の事前読み込み

フォームの表示時にカスタム項目値を表示するには、lightning:inputFieldvalue 属性を使用します。レコード ID を事前に読み込む場合、レコードを読み込んだときに返される レコード ID によってカスタム値が上書きされることはありません。

あるいは、項目値を次の構文で設定します。

詳細は、「lightning:recordEditForm」を参照してください。

メモ

レコードの作成時に lightning:recordFormlightning:recordEditForm では行えないカスタマイズが必要な場合には、force:recordData の使用を検討してください。

force:recordData を使用したカスタムユーザインターフェース経由でのレコードの作成

force:recordData を使用してレコードを作成するには、recordId 属性を除外します。force:recordDatagetNewRecord 関数をコールして、レコードテンプレートを読み込みます。最後に、新しいレコードに値を適用し、force:recordDatasaveRecord 関数をコールしてレコードを保存します。
  1. getNewRecord をコールして、レコードテンプレートから空のレコードを作成します。このレコードは、フォームのバッキングストアとして使用できます。あるいは、その値を保存用のデータに設定することもできます。
  2. saveRecord をコールして、レコードを確定させます。この点は、「レコードの編集」に記載されています。

レコードテンプレートから空のレコードの作成

レコードテンプレートから空のレコードを作成する場合、force:recordData タグに recordId は設定できません。recordId がなければ、Lightning データサービスが既存のレコードを読み込むことがありません。

コンポーネントの init または別のハンドラで、force:recordDatagetNewRecord をコールします。getNewRecord は次の引数を取ります。
属性名 説明
objectApiName String 新しいレコードのオブジェクト API 参照名。
recordTypeId String 新しいレコードのレコードタイプの 18 文字の ID。

指定されていない場合は、ユーザのプロファイルで定義したオブジェクトのデフォルトのレコードタイプが使用されます。

skipCache Boolean レコードテンプレートを、クライアント側の Lightning データサービスキャッシュではなく、サーバから読み込むかどうか。デフォルトは false です。
callback Function 空のレコードの作成後に呼び出される関数。この関数は引数を受け取りません。

getNewRecord は結果を返しません。空のレコードを準備して、targetRecord 属性に割り当てるだけです。

レコードの作成

次の例は、Lightning データサービスを使用したレコードの作成の要点を示しています。この例は、取引先レコードの Lightning ページに追加されることを意図しています。

ldsCreate.cmp
このコンポーネントは、force:recordDatarecordId 属性を設定しません。Lightning データサービスに、レコードの新規作成が見込まれることを伝達します。以下は、コンポーネントの init ハンドラにこのレコードが作成されています。
ldsCreateController.js
doInit init ハンドラが、force:recordData コンポーネントの getNewRecord() をコールして、簡単なコールバックハンドラを渡します。このコールによって、コンポーネントのマークアップで取引先責任者フォームが使用する新しい空の取引先責任者レコードを作成するための Record オブジェクトが返されます。

getNewRecord() に渡されるコールバックは、コールバックが呼び出されるときのアクセスコンテキストが適切なものになるように、$A.getCallback() でラップする必要があります。コールバックが $A.getCallback() でラップされないまま渡されると、コンポーネントの非公開属性にアクセスしようとしたときにアクセスチェックに失敗します。

アクセス先が非公開属性でなくても、$A.getCallback()getNewRecord() のコールバック関数を常にラップすることをお勧めします。コンテキストを混同することさえなければ大丈夫です。

メモ

[取引先責任者を保存] ボタンがクリックされると、handleSaveContact ハンドラがコールされます。これは、「レコードの編集」に記載のとおり、取引先責任者を保存して、ユーザインターフェースを更新する単純明快なアプリケーションです。

ヘルパー関数 validateContactForm は示されていません。この関数は単にフォームの値を検証するものです。この検証例については、「force:recordData を使用した Lightning Action の例」を参照してください。

メモ