ZAICOでは、Android・iOS・Rubyエンジニアを絶賛募集中です! 詳しくは、採用ページをご覧ください。
こんにちは、ZAICO開発チームです。
zaicoでは最近、zaico for SalesforceというAppExchangeアプリケーションをリリースしまして、zaicoと連動して在庫データの確認をSalesforce上から行うことができるようになりました。
これの開発中に気づいた点について紹介します。
Lightning Web Componentsの開発を行っているのですが、これにはコンポーネントが提供されており、ありがたいことにAppExchangeアプリケーションでもSalesforce標準のUIのような作りにすることができます。
オブジェクトのレコードを作るためのコンポーネントに、lightning-record-formがあり、これを使うと少ないコードでレコード作成用のフォームを作ることが可能です。
lightning-record-form – documentation – Salesforce Lightning Component Library
しかし、lightning-record-edit-formを使ってもレコード作成用のフォームを作ることができます。(editに惑わされてはいけない)
lightning-record-edit-form – documentation – Salesforce Lightning Component Library
早速ですがサンプルコードを例示して、簡単に解説します。
CreateTestRecordForm.html
<div class="slds-modal__content slds-p-around_medium">
<lightning-record-edit-form object-api-name="TestObj__c">
<div class="slds-grid">
<div class="slds-col slds-size_1-of-2">
<lightning-input-field field-name="Testa__c">
</lightning-input-field>
</div>
<div class="slds-col slds-size_1-of-2">
<lightning-input-field field-name="Testb__c">
</lightning-input-field>
</div>
</div>
</lightning-record-edit-form>
<lightning-record-form
object-api-name="TestObj__c"
onsubmit={handleSubmit}
onsuccess={handleSuccess}
>
</lightning-record-form>
</div>
CreateTestRecordForm.js
export default class CreateTestRecordForm extends LightningElement {
handleSubmit(event) {
event.preventDefault();
const fields = event.detail.fields;
// 1つ目の入力値を取得
const a = this.template.querySelectorAll("lightning-input-field")[0];
fields.Testa__c = a.value;
// 2つ目の入力値を取得
const b = this.template.querySelectorAll("lightning-input-field")[1];
fields.Testb__c = b.value;
this.template.querySelector("lightning-record-form").submit(fields);
}
handleSuccess(event) {
this.showCreateDeliveryForm = false;
this.dispatchEvent(
new ShowToastEvent({
message: "保存しました!",
variant: "success"
})
);
}
}
以下は表示例です。
ポイントなのは、lightning-record-edit-formとlightning-record-form、両方を使っています。
入力部品のためにlightning-record-edit-formを使い、実際の送信ではlightning-record-formの機構を利用している、というわけです。
これによって、lightning-record-formの手軽さとlightning-record-edit-formの柔軟さの両方を享受できます。
lightning-record-formはレコード作成に特化している一方、カスタマイズができないかと思います。例えば、入力時の注意事項をpタグで載せたいとき、それができません。
lightning-record-edit-formは柔軟に対応できますが、別途各種ボタンを用意してあげる必要がります。(そこまで大きな苦労ではないですが)
キャンセルボタンと送信ボタンはそのまま配置したいけど、入力部品のところだけちょっと書き足したい・・・
そんなときにこの方法が有益かもしれません。
今回はlightning-record-edit-formを使ってみた記事でしたが、他にもいろいろ駆使してzaico for Salesforceの機能拡充に励んで参ります!