Добавьте запись в объект Campaign в Salesforce, используя force: recordData - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь создать форму, которая добавляет записи к объекту 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 [Cannot читать свойство 'recordId' из null] "

Разве добавленной записи не должен быть присвоен уникальный идентификатор при создании? Я не уверен, где искать конкретную c информацию, которая мне нужна. Примеры в документации не помогли мне преодолеть это.

Любая помощь будет высоко ценится. Спасибо.

1 Ответ

0 голосов
/ 12 января 2020

Если этот код не находится в doInit, я считаю, что ошибка - это строка

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

Я не вижу, где вы когда-либо устанавливали, какая переменная simpleNewCampaign , поэтому вы пытаетесь установить recordId на ноль.

...