Es wurden 2 Elemente mit der nicht eindeutigen ID # billing-new-address-form Magento 2 gefunden

8

Auf der Checkout-Seite wird der folgende Konsolenfehler angezeigt, wenn ich die Versandart auswähle und mit dem nächsten Schritt "Zahlung" fortfahre.

[DOM] Es wurden 2 Elemente mit nicht eindeutiger ID # Abrechnungsformular für neue Adressen gefunden:

[DOM] Es wurden 2 Elemente mit der nicht eindeutigen ID # billing-save-in-address-book gefunden: `

Wie kann ich dieses Problem beheben?

Shekhar Suman
quelle
Ist dies ein standardmäßiger / sauberer Magento 2-Speicher? Welche Version? Scheint ein Fehler in Magento 2 zu sein. Gibt es ein damit verbundenes Gitub-Problem? Ab Chrome 63 werden jetzt Fehler im Zusammenhang mit DOM ausgegeben.
Erfan
Ich habe das gleiche Problem in Magento Community Edition 2.1.9
Supersonic
jede Lösung dafür
Ahmad Vaqas Khan
github.com/magento/magento2/issues/13415 - Vorlagen aus ./magento/module-checkout/view/frontend/web/template/billing-address/*.html werden für jede Zahlungsmethode verwendet, bei der die Rechnungsadresse nicht gleich sein kann Wenn beim Versand 2 DOM-Elemente mit derselben ID auf der Seite angezeigt werden, wird der Fehler ausgelöst. Wir müssen diesen IDs einen Zahlungsmethodencode hinzufügen, dies sind jedoch Frontend-Vorlagen. Nur JS-Code kann das, aber ich weiß nicht wie.
Alex Gusev
Ich hatte das gleiche Problem in 2.1.8, aber mit #agreements. Ich habe Magento überschrieben Vereinbarungen Core - Modul mit Magento_CheckoutAgreements in meiner benutzerdefinierten Vorlage Mage 2.2 Dateien github.com/magento/magento2/tree/2.2/app/code/Magento/... Dateien benötigt: web / template / Kasse / Checkout-agreements.html web / js / model / Agreement-Validator.js web / js / view / checkout-Agreements.js
Gediminas

Antworten:

1

Dieses Problem wurde in 2.3-Develop Branch behoben, es wird auch auf 2.2 zurückportiert und wird in 2.2.6 veröffentlicht. Ich kann sehen, dass es auch auf 2.1 zurückportiert wird.

Es müssen 2 Stellen geändert werden, um das Problem zu beheben

Anbieter / Magento / Modul-Geschenk-Nachricht / Ansicht / Frontend / Web / Vorlage / Geschenk-Nachricht-Formular.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>

Anbieter / Magento / Modul-Checkout / Ansicht / Frontend / Web / Vorlage / Rechnungsadresse / 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>

Prost

Toan Nguyen
quelle
-1

Wenn Sie aufgelöst werden möchten, folgen Sie diesem Schritt

  1. zuerst gefunden, wo das HTML in der .phtml-Datei
  2. Jetzt werden alle Daten mit einer Schleife wie (for, foreach) abgerufen.
  3. Wenn Daten mit einer Schleife als dieser ID abgerufen werden, fügen Sie einige eindeutige Daten hinzu

genau wie dieser

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

und uniq id genarated

Rasik Miyani
quelle
es funktioniert nicht.
Shekhar Suman