一意ではないIDを持つ2つの要素が見つかりました#billing-new-address-form Magento 2


8

チェックアウトページで、配送方法を選択して次のステップの「支払い」に進むと、次のコンソールエラーが表示されます。

[DOM]固有でないID#billing-new-address-formを持つ2つの要素が見つかりました:

[DOM]一意でないID#billing-save-in-address-bookを持つ2つの要素が見つかりました: `

この問題を解決するにはどうすればよいですか?


これはデフォルト/クリーンなMagento 2ストアですか?どのバージョン?Magento 2のバグのようです。これに関連するGitubの問題はありますか?Chrome 63以降、DOMに関連するエラーがスローされるようになりました。
Erfan

Magentoコミュニティエディション2.1.9でも同じ問題があります
スーパーソニック

それに対する任意の解決策
アフマドヴァーカスカーン2018

github.com/magento/magento2/issues/13415-./magento/module-checkout/view/frontend/web/template/billing-address/*.htmlからのテンプレートは、請求先住所が等しくない可能性があるすべての支払い方法に使用されます出荷時、同じIDの2つのDOM要素がページに表示されると、エラーが発生します。これらのIDに支払い方法コードを追加する必要がありますが、これらはフロントエンドテンプレートです。JSコードだけがそれを行うことができますが、私は方法がわかりません。
Alex Gusev

2.1.8でも同じ問題がありましたが、#agreementsがありました。私はメイジ2.2ファイル使用して、私のカスタムテンプレートにMagento_CheckoutAgreementsでMagentoの契約にコアモジュールを上書きしているgithub.com/magento/magento2/tree/2.2/app/code/Magento/...ウェブ/テンプレート/チェックアウト/チェックアウト-agreements.html:ファイルが必要にweb / js / model / agreement-validator.js web / js / view / checkout-agreements.js
Gediminas

回答:


1

この問題は2.3-developブランチで修正され、2.2にもバックポートされ、2.2.6にリリースされる予定です。2.1にもバックポートされていることがわかります。

問題を修正するために変更する必要がある2つの場所があります

vendor / magento / module-gift-message / view / 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>

vendor / 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>

乾杯


-1

あなたが解決したい場合は、この手順に従うより発行されます

  1. 最初に見つかった.phtmlファイル内のhtml
  2. 次に、(for、foreach)のようなループでデータを取得するものを分析します
  3. データがループで取得され、そのIDよりもいくつかの一意のデータが追加された場合

ちょうどこのような

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

一意のIDが生成されました


動いていない。
Shekhar Suman
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.