Нужна помощь в создание форм на lightning

Доброго времени суток.
Нужна помощь в создании формы на lightning.
Имеется объект с полями. Создаю aura component и через контроллеры и хелперы вывожу данные из объекта.

И вверху есть кнопки, по которым необходимо сделать вставку, удаление и изменение в списке контактов.
Может есть примеры как это сделать?
Буду очень благодарен.

Приветствую.
Вот таким образом вы можете добавить кнопку.

    <lightning:button variant="base" label="Base" title="Base action" onclick="{! c.handleClick }"/>

Вам нужно какие-то данные забирать с вашего view?

в js контроллере нужно создать вот такой мтеод, а там уже писать свою имплементацию

({
    handleClick: function (component) {
     .....
    }
})

ну и конечно же apex контроллер должен быть с аннотацией и статический.

    @AuraEnabled
    public static List<String> getListOfServices() {

Добрый день! Почитайте статью там подробно написано как сделать кнопку и список в lightning. Что-бы здесь все не описывать.

Ну и пишите вопросы если есть))

Там все понятно. И во второй части тоже.
Просто не совсем доходит до меня, как реализовать запись в поля и удалять поля.
Думал, может есть какие нить примеры уже реализованные.

Если я вам правильно понял, то вы хотите перейдя на определённую запись, поменять значение некоторых полей , обновить или удалить значение, чтобы потом по нажатию на кнопку “save” например, у записи изменились значения?

Например про добавление.
Есть таблица с данными (в моем примере это имя, телефон, емаил)
допустим внизу есть еще один компонент с инпутами имя, телефон, емаил.
туда вводим инфу, нажимаем сохранить и данные записываются в объект.
Хотябы разобраться с добавлением) а удалить я думаю проще будет) но буду благодарен за любую предоставленную информацию)

В контроллере создайте объект/поле необходимого вам типа. Например

public String name{get;set;}

И потом в inputField на VF странице в value вы подставляете это поле с помощью

value={!name}

и потом используйте метод, например:

public void createRecord() {
   System.debug(name);
}

Таким образов значения со страницы окажутся в вашем контроллере.
Отсюда можно сделать вывод что с таким же успехом эти значения можно сразу писать в объект необходимого типа и после чего делать insert/update.
Т.е
В контроллере, создайте экземпляр необходимого вам типа, и в него записывайте введённые значения со страницы. После просто вызывайте insert myAccount.

public Account myAccount{get;set;}

public myController() {
         myAccount = new Account(Name = "Test");
}

на странице пишете в {!myAccount.Name} или {!myAccount.Phone} поля, и по нажатии на кнопку делаете insert. Все введённые значение будут подхвачены и запись будет создана.

1 Like

Спасибо) будем пробовать.

1 Like

Вот так в Lightning компоненте объявляется переменная в вашем случае это допустим объект Contact

<aura:attribute name="con" type="Contact (Имя вашего SF обьекта) " default="(Описавыем сам обьект какие у него будут доступные поля){ 'sobjectType': 'Contact',
                        'Name': '',
                        'Phone': ''}"/>

Вот так обращаемся к объекту Contact на странице:

<lightning:input aura:id="namefield" label="Account Name"
                                         name="accname (Сами можете придумать)"
                                         value="{!v.con.Name}" (Здесь указываем что это поле Name обьявленого выше обьекта Contact. v.con.Name - v это view зарезервировано SF; con это наша переменная на странице )
                                         required="true"/>

Дальше создаем JavaScript контроллер:

({
    saveCon : function(component(то что приходит из Lightning  страницы), event) {
        var newCon = component.get("v.con") - (обращаемся к переменной "con" обьявленой на странице);
        var action = component.get("c.saveContact") - (обращаемся к функции из Apex класса где "c.имяФункции" обозначение метода из Apex контроллера);
        action.setParams({
            "contact (Это имя входящего параметра функции "saveContact" из Apex класса )":newCon - (это объект из страницы здусь мы передаем значения из страницы в Apex метод )
        });
        action.setCallback(this, function(response) { в этом месте получаем ответ от Apex метода можно ничего не менять
            var state = response.getState();
            if (state === "SUCCESS") {
                component.set("v.conId" - это еще одна переменная из страницы туда записывается ид сохраненной записи, response.getReturnValue().Id); - 
                component.set("v.con", response.getReturnValue());
            }
        });
        $A.enqueueAction(action); - этот момент обязателен сюда нужно передать переменную action которую мы обьявили выше "var action" без него не будет работать
    }
})

Ну и метод Apex класса:

   @AuraEnabled
    public static Contact saveContact(Contact contact){
        upsert contact;
        return contact;
    }

как сделать редактирование отдельной записи через контроллер сервера?

Думаю для этого стоит создать отдельную тему :slightly_smiling_face: