使用 force:recordData 将记录添加到 Salesforce 中的营销活动对象



我正在尝试创建一个将记录添加到 Campaign 对象的表单。我是 salesforce 的新手,一直在努力弄清楚如何做到这一点以及我的理解差距在哪里。

这是我对该组件的代码:

<aura:attribute name="newCampaign" type="Object"/>
<aura:attribute name="simpleNewCampaign" type="Object"/>
<aura:attribute name="newCampaignError" type="String"/>
<aura:attribute name="recordId" type="String"/>
<aura:handler name="init" value="{!this}" action="{!c.doInit}"/>
<force:recordData aura:id="campaignRecordCreator"
recordId = "{!v.recordId}"
targetRecord="{!v.newCampaign}"
targetFields ="{!v.simpleNewCampaign}"
targetError="{!v.newCampaignError}"
mode="EDIT"
layoutType="FULL" />
<!-- Display the new contact form -->
<div>
<lightning:card iconName="action:new_campaign" title="Create Campaign">
<div class="slds-p-horizontal--small">
<lightning:input type="string" name="name" label="Name" value=""/>
<lightning:input type="date" name="StartDate" label="Start Date" value=""/>
<lightning:input type="date" name="EndDate" label="End Date" value=""/>
<lightning:select name="Venue_State__c" label="State" required="">
<option value="">choose one...</option>
<option value="1">AL</option>
<option value="2">AK</option>
<option value="3">AZ</option>
<option value="4">AR</option>
<option value="5">CA</option>
<option value="6">CO</option>
<option value="7">CT</option>
<option value="8">DE</option>
<option value="9">FL</option>
<option value="10">GA</option>
<option value="11">HI</option>
<option value="12">ID</option>
<option value="13">IL</option>
<option value="14">IN</option>
<option value="15">IA</option>
<option value="16">KS</option>
<option value="17">KY</option>
<option value="18">LA</option>
<option value="19">ME</option>
<option value="20">MD</option>
<option value="21">MA</option>
<option value="22">MI</option>
<option value="23">MN</option>
<option value="24">MS</option>
<option value="25">MO</option>
<option value="26">MT</option>
<option value="27">NE</option>
<option value="28">NV</option>
<option value="29">NH</option>
<option value="30">NJ</option>
<option value="31">NM</option>
<option value="32">NY</option>
<option value="33">NC</option>
<option value="34">ND</option>
<option value="35">OH</option>
<option value="36">OK</option>
<option value="37">OR</option>
<option value="38">PA</option>
<option value="39">RI</option>
<option value="40">SC</option>
<option value="41">SD</option>
<option value="42">TN</option>
<option value="43">TX</option>
<option value="44">UT</option>
<option value="45">VT</option>
<option value="46">VA</option>
<option value="47">WA</option>
<option value="48">WV</option>
<option value="49">WI</option>
<option value="50">WY</option>
</lightning:select>
<lightning:input type="string" name="Description" label="Description" value=""/>
<lightning:select name="Type" label="Category">
<option value="">choose one...</option>
<option value="1">ACCE Conference</option>
<option value="2">ALEC Conference</option>
<option value="3">Annual Meeting</option>
<option value="4">Auction</option>
<option value="5">Coalition Event</option>
<option value="6">Conference</option>
<option value="7">Dinner</option>
<option value="8">Donor Appeal</option>
<option value="9">Lisa Travel</option>
<option value="10">Marketing</option>
<option value="11">Membership Appeal</option>
<option value="12">Newsletter</option>
<option value="13">Staff State Travel</option>
<option value="14">Subscription</option>
<option value="15">Task Force/Center Event</option>
<option value="16">Task Force Update</option>
<option value="17">Dinner</option>
<option value="18">Donor Appeal</option>
<option value="19">Lisa Travel</option>
<option value="20">General Meeting</option>
</lightning:select>
<lightning:select name="Status" label="Status" value="">
<option value="">choose one...</option>
<option value="1">Tentative</option>
<option value="2">Planned</option>
<option value="3">In Progress</option>
<option value="4">Completed</option>
<option value="5">Aborted</option>
<option value="2">Idea</option>
</lightning:select>
<lightning:input type="checkbox" label="Add to Public Caldendar" name="Show_on_Public_Calendar__c" checked="true"/>
<br/>
<lightning:button label="Submit" variant="brand" onclick="{!c.handleSaveCampaign}"/>
</div>
</lightning:card>
</div>
<!-- Display Lightning Data Service errors -->
<aura:if isTrue="{!not(empty(v.newCampaignError))}">
<div class="recordError">
{!v.newCampaignError}</div>
</aura:if>

和控制器:

handleSaveCampaign: function(component, event, helper) {
if(helper.validateCampaignForm(component)) {
component.set("v.simpleNewCampaign.recordId", component.get("v.recordId"));
component.find("campaignRecordCreator").saveRecord(function(saveResult) {
if (saveResult.state === "SUCCESS" || saveResult.state === "DRAFT") {
// record is saved successfully
var resultsToast = $A.get("e.force:showToast");
resultsToast.setParams({
"title": "Saved",
"message": "The record was saved."
});
resultsToast.fire();
} else if (saveResult.state === "INCOMPLETE") {
// handle the incomplete state
console.log("User is offline, device doesn't support drafts.");
} else if (saveResult.state === "ERROR") {
// handle the error state
console.log('Problem saving campaign, error: ' + JSON.stringify(saveResult.error));
} else {
console.log('Unknown problem, state: ' + saveResult.state + ', error: ' + JSON.stringify(saveResult.error));
}
});
}
}

}(

帮助程序函数设置为始终返回 true。 当我在主页上查看此表单时,表单下方出现"记录不可创建",当我单击提交按钮时,我收到错误消息: "未捕获的操作失败:c:RecordFormCampaign$controller$handleSaveCampaign [无法读取 null 的属性'recordId']">

创建时不应为添加的记录分配唯一 ID?我不确定在哪里查找我需要的特定信息。文档中的示例并没有帮助我解决这个问题。

任何帮助将不胜感激。谢谢。

除非这段代码在 doInit 中,否则我相信错误是以下行

component.set("v.simpleNewCampaign.recordId", component.get("v.recordId"));

我没有看到你在哪里设置了变量simpleNewCampaign,所以你试图在空值上设置 recordId。

最新更新