Изучение методов поиска идентификатора текущей записи и имени объекта в компонентах Aura

В компонентах Salesforce Aura обычно требуется получить идентификатор текущей записи и имя объекта. Эта информация может иметь решающее значение для выполнения различных операций, таких как получение связанных данных, выполнение вызовов API или динамическое отображение информации. В этой статье мы рассмотрим несколько методов выполнения этой задачи на примерах кода.

Метод 1: использование интерфейса Force:hasRecordId
Компоненты Aura, реализующие интерфейс force:hasRecordId, имеют доступ к атрибуту v.recordId, который содержит идентификатор текущей записи.. Чтобы получить имя объекта, вы можете использовать поставщик глобальных значений $ObjectType.

Пример кода:

<aura:component implements="force:hasRecordId">
    <aura:attribute name="recordId" type="Id" />
    <aura:attribute name="objectName" type="String" />
    <aura:handler name="init" value="{!this}" action="{!c.init}" />
    <div>
        Current Record ID: {!v.recordId}
    </div>
    <div>
        Object Name: {!v.objectName}
    </div>
</aura:component>
({
    init: function(component, event, helper) {
        component.set("v.objectName", $A.get("$ObjectType.Account").ApiName);
    }
})

Метод 2: использование JavaScript в компонентах Aura
Вы можете использовать JavaScript в контроллере или помощнике вашего компонента Aura для извлечения идентификатора записи и имени объекта с помощью методов getRecordId()и $ObjectTypeпоставщик глобальных значений соответственно.

Пример кода:

<aura:component>
    <aura:attribute name="recordId" type="Id" />
    <aura:attribute name="objectName" type="String" />
    <aura:handler name="init" value="{!this}" action="{!c.init}" />
    <div>
        Current Record ID: {!v.recordId}
    </div>
    <div>
        Object Name: {!v.objectName}
    </div>
</aura:component>
({
    init: function(component, event, helper) {
        component.set("v.recordId", helper.getRecordId());
        component.set("v.objectName", helper.getObjectName());
    },
    getRecordId: function() {
        return component.get("v.recordId") || component.get("v.pageReference").state.recordId;
    },
    getObjectName: function() {
        return $A.get("$ObjectType.Account").ApiName;
    }
})

Метод 3. Использование контроллера Apex
Если вам нужен доступ к текущему идентификатору записи и имени объекта на стороне сервера, вы можете создать метод контроллера Apex и вызвать его из компонента Aura.

Пример кода:

<aura:component controller="MyController">
    <aura:attribute name="recordId" type="Id" />
    <aura:attribute name="objectName" type="String" />
    <aura:handler name="init" value="{!this}" action="{!c.init}" />
    <div>
        Current Record ID: {!v.recordId}
    </div>
    <div>
        Object Name: {!v.objectName}
    </div>
</aura:component>
({
    init: function(component, event, helper) {
        var action = component.get("c.getCurrentRecordInfo");
        action.setCallback(this, function(response) {
            var state = response.getState();
            if (state === "SUCCESS") {
                var result = response.getReturnValue();
                component.set("v.recordId", result.recordId);
                component.set("v.objectName", result.objectName);
            }
        });
        $A.enqueueAction(action);
    }
})
public class MyController {
    @AuraEnabled
    public static Map<String, String> getCurrentRecordInfo() {
        Map<String, String> recordInfo = new Map<String, String>();
        recordInfo.put('recordId', ApexPages.currentPage().getParameters().get('recordId'));
        recordInfo.put('objectName', 'Account');
        return recordInfo;
    }
}

В этой статье мы рассмотрели несколько методов поиска текущего идентификатора записи и имени объекта в компонентах Aura. Используя интерфейс force:hasRecordId, JavaScript или контроллеры Apex, вы можете легко получить доступ к этой информации и использовать ее для различных целей в своих приложениях Salesforce Lightning.