設定教育環境中單一禮物項目的後續處理模式
設定後續處理強制回應以在使用者按一下「流程禮物」或「流程與新增」之後顯示。
必要版本
| 所需版本 |
|---|
| 提供版本:Lightning Experience |
提供版本:具備 Education Cloud 的 Enterprise、Performance、Unlimited 及 Developer Edition 提供版本:具備 Nonprofit Cloud 的 Enterprise、Unlimited 及 Developer Edition |
| 所需的使用者權限 | |
|---|---|
| 若要設定後續處理強制回應: | FundraisingAccess 權限集 或 Education Cloud 完整存取權限集 |
- 在範本的「禮物項目貼文處理」區段中,按一下「新增步驟」。
- 從「Lightning Web 元件名稱」中選取您的元件。
-
為要顯示的 Lightning Web 元件新增條件。
例如,禮物處理狀態等於成功。
- 儲存您的變更。
-
將您的範本設定為單一禮物項目的預設值。
- 進入「設定」,在「快速尋找」方塊中尋找並選取「禮物項目」。
-
在範本的列中,按一下
,然後選取「設定為單一項目預設值」。
範例:為單一禮物項目建立禮物禮物記錄
使用 Lightning Web 元件為單一禮物項目建立「禮物禮物」記錄。
| 所需版本 |
|---|
| 提供版本:Lightning Experience |
提供版本:具備 Education Cloud 的 Enterprise、Performance、Unlimited 及 Developer Edition 提供版本:具備 Nonprofit Cloud 的 Enterprise、Unlimited 及 Developer Edition |
這些 Lightning Web 元件程式碼片段會顯示為單一禮物項目建立「禮物禮物」記錄的非常基本表單。
giftEntryTributePostSave.html:
<template>
<section class="slds-card">
<div class="slds-card__header slds-grid slds-p-around_medium">
<header class="slds-media slds-media_center slds-has-flexi-truncate">
<div class="slds-media__figure">
<span class="slds-icon_container slds-icon-standard-people" title="Tribute">
<svg class="slds-icon slds-icon_small" aria-hidden="true">
<use xlink:href="/assets/icons/standard-sprite/svg/symbols.svg#people"></use>
</svg>
</span>
</div>
<div class="slds-media__body">
<h2 class="slds-card__header-title slds-truncate slds-text-heading_medium" title="Create Tribute">
Create Tribute
</h2>
</div>
</header>
</div>
<div class="slds-card__body slds-card__body_inner slds-p-horizontal_medium slds-p-bottom_medium">
<lightning-record-edit-form
object-api-name={objectApiName}
onsuccess={handleSuccess}
onerror={handleError}
onsubmit={handleSubmit}
class="slds-p-top_none"
>
<!-- Hidden GiftTransactionId (prefilled via @api) -->
<lightning-input-field
field-name={giftTransactionField}
value={giftTransactionId}
if:true={hasGiftTransaction}
class="slds-hide"
></lightning-input-field>
<div class="slds-grid slds-wrap slds-gutters">
<div class="slds-col slds-size_1-of-1 slds-large-size_1-of-2">
<div class="slds-form-element">
<label class="slds-form-element__label" for="tributeType">Tribute Type</label>
<div class="slds-form-element__control">
<!-- TributeType defaulted to Honoree -->
<lightning-input-field
field-name={tributeTypeField}
value="Honor"
data-field="TributeType"
></lightning-input-field>
</div>
</div>
</div>
<div class="slds-col slds-size_1-of-1 slds-large-size_1-of-2">
<lightning-input-field
field-name={honoreeContactField}
data-field="HonoreeContactId"
></lightning-input-field>
</div>
<div class="slds-col slds-size_1-of-1 slds-large-size_1-of-2">
<lightning-input-field
field-name={honoreeNameField}
data-field="HonoreeName"
></lightning-input-field>
</div>
<div class="slds-col slds-size_1-of-1">
<lightning-input-field
field-name={honoreeInfoField}
data-field="HonoreeInformation"
></lightning-input-field>
</div>
</div>
<div class="slds-m-top_medium slds-grid slds-grid_align-spread">
<lightning-button
label="Cancel"
title="Cancel"
onclick={handleCancel}
></lightning-button>
<lightning-button
class="slds-m-left_small"
variant="brand"
type="submit"
label="Create Tribute"
title="Create Tribute"
disabled={isSubmitting}
onclick={preSubmitDefaulting}
></lightning-button>
</div>
<template if:true={errorMessage}>
<div class="slds-m-top_medium slds-text-color_error">
{errorMessage}
</div>
</template>
</lightning-record-edit-form>
</div>
</section>
</template>
giftEntryTributePostSave.js:
import { LightningElement, api, track } from 'lwc';
import { ShowToastEvent } from 'lightning/platformShowToastEvent';
import GIFT_TRIBUTE_OBJECT from '@salesforce/schema/GiftTribute';
import TRIBUTE_TYPE_FIELD from '@salesforce/schema/GiftTribute.TributeType';
import HONOREE_CONTACT_FIELD from '@salesforce/schema/GiftTribute.HonoreeContactId';
import HONOREE_NAME_FIELD from '@salesforce/schema/GiftTribute.HonoreeName';
import HONOREE_INFO_FIELD from '@salesforce/schema/GiftTribute.HonoreeInformation';
import GIFT_TRANSACTION_FIELD from '@salesforce/schema/GiftTribute.GiftTransactionId';
/**
* LWC: giftEntryTributePostSave
* Displays TributeType (default Honoree), HonoreeContactId, HonoreeName, HonoreeInformation
* Associates GiftTransactionId via @api
* Uses lightning-record-edit-form to create a GiftTribute
*/
export default class GiftEntryTributePostSave extends LightningElement {
/**
* Required input property.
* Contains all the data for the row.
*/
@api
set rowData(value) {
this._rowData = value || {};
this.initializeFields();
}
get rowData() {
return this._rowData;
}
/**
* Required input property.
* Contains objects for templateConfig and recordId for navigation
*/
@api configuration;
// Public API: Gift Transaction to link tribute to (hidden field)
@api giftTransactionId;
connectedCallback() {
this.initializeFields();
}
/**
* Initialize form fields with data from rowData
*/
initializeFields() {
console.log('** in initialize fields.')
this.giftTransactionId = this._rowData['GiftTransactionId'];
console.log('** gift transaction id: ' + this.giftTransactionId + '');
}
// record-edit-form bindings
objectApiName = GIFT_TRIBUTE_OBJECT;
tributeTypeField = TRIBUTE_TYPE_FIELD;
honoreeContactField = HONOREE_CONTACT_FIELD;
honoreeNameField = HONOREE_NAME_FIELD;
honoreeInfoField = HONOREE_INFO_FIELD;
giftTransactionField = GIFT_TRANSACTION_FIELD;
@track isSubmitting = false;
@track errorMessage;
get hasGiftTransaction() {
return !!this.giftTransactionId;
}
// Ensure defaults and set hidden values on submit
handleSubmit(event) {
this.isSubmitting = true;
this.errorMessage = undefined;
// Prevent default submit to inject default values
event.preventDefault();
// Clone and enforce defaults
const fields = { ...event.detail.fields };
// Default TributeType to Honoree if not provided/changed
if (!fields[TRIBUTE_TYPE_FIELD.fieldApiName]) {
fields[TRIBUTE_TYPE_FIELD.fieldApiName] = 'Honoree';
}
// Set hidden GiftTransaction if provided via @api
if (this.giftTransactionId) {
fields[GIFT_TRANSACTION_FIELD.fieldApiName] = this.giftTransactionId;
}
// Submit updated fields
this.template.querySelector('lightning-record-edit-form').submit(fields);
}
handleSuccess(event) {
this.isSubmitting = false;
this.errorMessage = undefined;
// Show a success toast using platform event
this.dispatchEvent(
new ShowToastEvent({
title: 'Success',
message: 'Gift Tribute Created!',
variant: 'success'
})
);
this.closeModal();
}
handleError(event) {
this.isSubmitting = false;
// LDS error object includes detail; surface friendly message where possible
const err = event.detail;
this.errorMessage =
(err && (err.message || err.detail || (err.output && err.output.errors && err.output.errors[0] && err.output.errors[0].message))) ||
'An unexpected error occurred while creating the tribute.';
// Show an error toast using platform event
this.dispatchEvent(
new ShowToastEvent({
title: 'Error',
message: 'Failed to create Tribute: ' + this.errorMessage,
variant: 'error'
})
);
}
handleCancel() {
this.closeModal();
}
/**
* Close the modal (emit custom event)
*/
closeModal() {
console.log('** in close modal');
this.dispatchEvent(new CustomEvent('closemodal', {
detail: {
componentName: 'c/giftEntryTributePostSave'
}
}));
}
/* toast helper removed; using ShowToastEvent directly */
}
此文章是否解決您的問題?
請讓我們知道,以便我們改進!

