2 éléments trouvés avec un identifiant non unique # billing-new-address-form Magento 2


8

Lorsque sur la page de paiement, je reçois l'erreur de console suivante lors de la sélection de la méthode d'expédition et de la prochaine étape de «paiement».

[DOM] 2 éléments trouvés avec un identifiant non unique # billing-new-address-form:

[DOM] 2 éléments trouvés avec un identifiant non unique # billing-save-in-address-book: `

Comment puis-je résoudre ce problème?


S'agit-il d'un magasin Magento 2 par défaut / propre? Quelle version? Cela ressemble à un bogue dans Magento 2. Y a-t-il un problème Gitub lié à cela? À partir de Chrome 63, il génère désormais des erreurs liées à DOM.
Erfan

J'ai le même problème dans l'édition communautaire de Magento 2.1.9
Supersonic

toute solution pour cela
Ahmad Vaqas Khan

github.com/magento/magento2/issues/13415 - les modèles de ./magento/module-checkout/view/frontend/web/template/billing-address/*.html sont utilisés pour chaque méthode de paiement où l'adresse de facturation peut être différente à l'expédition, lorsque 2 éléments DOM avec le même ID apparaissent sur la page, l'erreur est générée. Nous devons ajouter un code de méthode de paiement à ces ID, mais ce sont des modèles frontaux. Seul le code JS peut le faire mais je ne sais pas comment.
Alex Gusev

J'ai eu le même problème sur 2.1.8, mais avec #agreements. J'ai remplacé le module principal des accords Magento avec Magento_CheckoutAgreements dans mon modèle personnalisé en utilisant les fichiers Mage 2.2 github.com/magento/magento2/tree/2.2/app/code/Magento/… Fichiers nécessaires: web / template / checkout / checkout- accords.html web / js / model / agreement-validator.js web / js / view / checkout-accords.js
Gediminas

Réponses:


1

Ce problème est résolu dans la branche 2.3-develop, il est également rétroporté vers 2.2 et va être publié dans 2.2.6, je peux voir qu'il est également rétroporté vers 2.1.

Il y a 2 endroits à changer pour résoudre le problème

fournisseur / magento / module-cadeau-message / vue / frontend / web / template / gift-message-form.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>

fournisseur / magento / module-checkout / view / frontend / web / template / billing-address / 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>

À votre santé


-1

si vous voulez résoudre le problème, suivez cette étape

  1. trouvé la première fois où ce html dans le fichier .phtml
  2. Maintenant, tous ceux qui obtiennent des données avec une boucle comme (for, foreach)
  3. si les données obtiennent avec boucle que cet id avec ajouter des données uniques

juste comme ça

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

et uniq id générés


ça ne fonctionne pas.
Shekhar Suman
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.