Якщо у вашому магазині Magento 2 з’являється повідомлення про помилку "An element with a “root” ID already exists", це, швидше за все, пов'язано з третьостороннім розширенням, яке викликає методи для повторного відтворення сторінки (page re-rendering).

Виконайте наступні кроки, щоб виправити помилку "An element with a “root” ID already exists":

1. Знайдіть PHP-файл і рядок, що викидає помилку (throw an exception).

2. Відкрийте CLI (термінал), перейдіть до кореневого каталогу Magento і виконайте наступні команди, щоб знайти потріний файл:

grep vendor/ -re ' ID already exists'
grep app/ -re ' ID already exists'

Ви отримаєте результат, схожий до цього:

vendor/magento/framework/Data/Form.php: 'An element with a "' . $elementId . '" ID already exists.'
vendor/magento/framework/Data/Test/Unit/FormTest.php: $this->expectExceptionMessage('An element with a "1" ID already exists.');
vendor/magento/framework/Data/Structure.php: new \Magento\Framework\Phrase('An element with a "%1" ID already exists.', [$elementId])

3. Потім відкрийте кожен файл (крім * Test.php) і поставте backtrace та функцію exit перед тим, як вони викинуть помилки, наприклад:

if (isset($this->_elements[$elementId])) {
\Magento\Framework\Debug::backtrace(false, true, false); exit();
throw new LocalizedException(
new \Magento\Framework\Phrase('An element with a "%1" ID already exists.', [$elementId])
);
}

4. Збережіть файли, очистіть кеш і оновіть сторінку.

Якщо помилка з'явилася у запиті ajax, перевірте вкладку network у вашому браузері (повторно надішліть запит Ajax).

Ви отримаєте backtrace виконання коду, тому зверніть увагу на рядки, пов’язані з кастомними/третьосторонніми модулями, наприклад:

Magento Code Backtrace

Спробуйте вимкнути кастомний функціонал цих модулів, щоб перевірити, чи це вирішує проблему. Коли ви виявите, який код модуля є причиною проблеми, ви станете на крок ближче до її вирішення.

Оновіть код, щоб налагодити роботу розширення, зв’яжіться з постачальником розширення (розробником) і попросіть виправити помилку, або просто вимкніть модуль.