Foram encontrados 2 elementos com o ID não exclusivo # billing-new-address-form Magento 2

8

Quando na página de check-out, recebo o seguinte erro do console ao selecionar o método de envio e passar para a próxima etapa 'pagamento'.

[DOM] Foram encontrados 2 elementos com o ID não exclusivo # faturamento-novo-endereço-formulário:

[DOM] Foram encontrados 2 elementos com o ID não exclusivo # billing-save-in-Address-book: `

Como posso resolver esse problema?

Shekhar Suman
fonte
Esta é uma loja Magento 2 padrão / limpa? Qual versão? Parece um bug no Magento 2. Existe um problema no Gitub associado a isso? A partir do Chrome 63, agora está lançando erros relacionados ao DOM.
Erfan
Eu tenho o mesmo problema na edição da comunidade Magento 2.1.9
Supersonic
qualquer solução para ele
Ahmad Khan Vaqas
github.com/magento/magento2/issues/13415 - modelos de ./magento/module-checkout/view/frontend/web/template/billing-address/*.html são usados ​​para todos os métodos de pagamento em que o endereço de cobrança não seja igual para envio, quando 2 elementos DOM com o mesmo ID são exibidos na página, o erro é gerado. Precisamos adicionar o código da forma de pagamento a esses IDs, mas esses são modelos de front-end. Somente o código JS pode fazer isso, mas não sei como.
Alex Gusev
Eu tive o mesmo problema no 2.1.8, mas com #agreements. Substituí o módulo principal do Magento Agreements com Magento_CheckoutAgreements no meu modelo personalizado usando os arquivos do Mage 2.2 github.com/magento/magento2/tree/2.2/app/code/Magento/… Arquivos necessários: web / template / checkout / checkout-Agreements.html web / js / model / contract-validator.js web / js / view / checkout-Agreements.js
Gediminas

Respostas:

1

Esse problema foi corrigido no ramo 2.3-develop, também foi suportado para 2.2 e será lançado no 2.2.6.

É necessário alterar 2 lugares para corrigir o problema

fornecedor / magento / mensagem-presente-módulo / vista / front-end / web / modelo / mensagem-presente-formulário.html

<!--
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<!-- ko if: isActive() -->
<div class="gift-message">
    <div class="gift-options-title">
        <span data-bind="i18n: 'Gift Message (optional)'"></span>
    </div>
    <div class="gift-options-content">
        <fieldset class="fieldset">
            <div class="field field-to">
                <label data-bind="attr: {for: 'gift-message-whole-to-' + index }" class="label">
                    <span data-bind="i18n: 'To:'"></span>
                </label>
                <div class="control">
                    <input type="text"
                           class="input-text"
                           data-bind="value: getObservable('recipient'), attr: { id: 'gift-message-whole-to-' + index }">
                </div>
            </div>

            <div class="field field-from">
                <label data-bind="attr: {for: 'gift-message-whole-from-' + index }" class="label">
                    <span data-bind="i18n: 'From:'"></span>
                </label>
                <div class="control">
                    <input type="text"
                           class="input-text"
                           data-bind="value: getObservable('sender'), attr: { id: 'gift-message-whole-from-' + index }">
                </div>
            </div>
            <div class="field text">
                <label for="gift-message-whole-message" class="label">
                    <span data-bind="i18n: 'Message:'"></span>
                </label>
                <div class="control">
                    <textarea id="gift-message-whole-message"
                              class="input-text"
                              rows="5" cols="10"
                              data-bind="value: getObservable('message')"></textarea>
                </div>
            </div>
        </fieldset>

    </div>
</div>
<!-- /ko -->
<div class="actions-toolbar">
    <div class="secondary">
        <button type="submit" class="action secondary action-update" data-bind="
                    attr: {title: $t('Update')},
                    click: $data.submitOptions.bind($data)">
            <span data-bind="i18n: 'Update'"></span>
        </button>
        <button class="action action-cancel" data-bind="
                    attr: {title: $t('Cancel')},
                    click: $data.hideFormBlock.bind($data)">
            <span data-bind="i18n: 'Cancel'"></span>
        </button>
    </div>
</div>

fornecedor / magento / check-out do módulo / view / frontend / web / template / endereço de cobrança / form.html

<!--
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<div class="billing-address-form" data-bind="fadeVisible: isAddressFormVisible">
    <!-- ko foreach: getRegion('before-fields') -->
    <!-- ko template: getTemplate() --><!-- /ko -->
    <!--/ko-->
    <form data-bind="attr: {'data-hasrequired': $t('* Required Fields')}">
        <fieldset
            data-bind="attr: { id:'billing-new-address-form-'+index, value:index}"
            class="billing-new-address-form fieldset address">
            <!-- ko foreach: getRegion('additional-fieldsets') -->
            <!-- ko template: getTemplate() --><!-- /ko -->
            <!--/ko-->
            <!-- ko if: (isCustomerLoggedIn && customerHasAddresses) -->
            <div class="choice field">
                <input type="checkbox" class="checkbox"  data-bind="checked: saveInAddressBook, attr: {id: 'billing-save-in-address-book-' + getCode($parent)}" />
                <label class="label" data-bind="attr: {for: 'billing-save-in-address-book-' + getCode($parent)}" >
                    <span data-bind="i18n: 'Save in address book'"></span>
                </label>
            </div>
            <!-- /ko -->
        </fieldset>
    </form>
</div>

Felicidades

Toan Nguyen
fonte
-1

Se você deseja resolver resolvido, siga esta etapa

  1. encontrado pela primeira vez onde esse html no arquivo .phtml
  2. Agora, qualquer um que obtenha dados com um loop como (for, foreach)
  3. se os dados ficarem com loop que esse id, adicione alguns dados exclusivos

bem assim

<?php
foreach ($variable as $key => $value) {
 ?>
      <div id="billing-new-address-form<?php echo "-"."daynamic some unique id"; ?>"></div>
 <?php
}
?>

e uniq id genarated

Rasik Miyani
fonte
não está funcionando.
Shekhar Suman