Невозможно сохранить значение выбранного пользователем раскрывающегося списка в SFCC Demandware

Я создал новый атрибут (favouriteStore - Enum of String datatype) в стандартном объекте «профиль» и добавил его на страницу создания учетной записи в витрине. Теперь я не мог получить выбранное пользователем значение раскрывающегося списка из ISML в js. Я попробовал приведенный ниже код, и он возвращает значение undefined. Не могли бы вы помочь мне с этим.

Ниже приведен код isml: registerForm.isml

 <div class="form-group
        <isif condition=" ${!!pdict.profileForm.customer.favouriteStore.mandatory === true}">required</isif>">

        <label class="form-control-label" for="registration-form-favouriteStore">
            <isprint value="${pdict.profileForm.customer.favouriteStore.label}" encoding="htmlcontent" />
        </label>
        <div class="info-icon">
            <span><i class="fa fa-info-circle beet-color" aria-hidden="true"></i></span>
            <span class="tooltip account-tooltip d-none">Pick your favourite store</span>
        </div>
        <select class="custom-select form-control" id="favouriteStore" onchange="getSelected(this)" name="favouriteStore">
        <isloop items=${pdict.profileForm.customer.favouriteStore.options} var="store">
            <option id="${store.id}" value="${store.htmlValue}" 
            <isif condition="${store.selected}">selected</isif> >${store.label}</option>
        </isloop>
        </select>
    </div>

Js-код: Account.js

var registrationFormObj = {
            firstName: registrationForm.customer.firstname.value,
            lastName: registrationForm.customer.lastname.value,
            phone: registrationForm.customer.phone.value,
            email: registrationForm.customer.email.value,
            emailConfirm: registrationForm.customer.emailconfirm.value,
            password: registrationForm.login.password.value,
            passwordConfirm: registrationForm.login.passwordconfirm.value,
            customerPostcode: registrationForm.customer.customerPostcode.value,
            favouriteStore: registrationForm.customer.favouriteStore.value,
            marketingPreferences: registrationForm.customer.marketingPreferences.value,
            validForm: registrationForm.valid,
            form: registrationForm
        };

profile.xml:

<field formid="favouriteStore" label="Favourite Store" type="string" mandatory="true" binding="favouriteStore">
            <options>
                <option optionid="" label="" value=""/>
                <option optionid="1" label="Shell Kingsburn, Borough of Royal Kensington, London EC2 3AH" value="Shell Kingsburn Borough of Royal Kensington, London EC2 3AH"/>
                <option optionid="2" label="Chealsea, City Road, London EC2 9AW" value="Chealsea, City Road, London EC2 9AW"/>
                <option optionid="3" label="London Store, 2nd Street, London  EC2 9AW" value="London Store, 2nd Street, London  EC2 9AW"/>
            </options>
            </field>

Все остальные строковые поля сохраняются, только это поле раскрывающегося списка favouriteStore возвращает значение undefined. Не могли бы вы указать мне, где я ошибаюсь.

Заранее спасибо!


person Sri Pavithra Chellamuthu    schedule 07.01.2021    source источник
comment
Вы неправильно написали "избранное" в поле registrationForm.customer.favoriteStore.value   -  person AlBlue    schedule 07.01.2021
comment
@AlBlue Спасибо за ответ! Извините, это моя ошибка. Я поправил. Но поле раскрывающегося списка все еще пустое. Не могли бы вы сообщить мне, могут ли возникнуть другие проблемы с кодом   -  person Sri Pavithra Chellamuthu    schedule 08.01.2021


Ответы (1)


Как упоминалось в AlBlue, проблема, похоже, заключается в том, что вы не написали favouriteStore одинаково в ISML и DWScript. (JavaScript)

Тем не менее, вы должны убедиться, что у вас также есть форма XML, определенная для этого поля. Например, вы должны добавить его в cartridge/forms/default/profile.xml файл картриджа витрины магазина. (или заменить одно из app_storefront_base)

person sholsinger    schedule 07.01.2021
comment
Спасибо за ваш ответ! Даже после обновления я столкнулся с проблемой .. Значение не сохраняется на уровне объекта. Я также добавил код xml. Не могли бы вы проверить и сообщить мне, есть ли другие проблемы. - person Sri Pavithra Chellamuthu; 08.01.2021
comment
@AIBlue и sholsinger Проблема заключалась в onchange = getSelected (this) в ISML. После удаления этого и добавления ‹isprint value = $ {pdict.profileForm.customer.favouriteStore.attributes} encoding = off /› для выбора тега сохранение сработало! Еще один вопрос: мне нужно заменить всю запятую (,) разрывом (‹br/›) или новой строкой в ​​строке. Я использовал метод замены из класса String. Но это не работает должным образом. Не могли бы вы сообщить мне синтаксис о том, как его использовать? Спасибо большое за вашу помощь! - person Sri Pavithra Chellamuthu; 08.01.2021