Якщо у вашому Magento 2 виникає помилка «Елемент з кореневим ідентифікатором вже існує», найімовірніше, це пов’язано зі стороннім розширенням, яке викликає методи для повторного рендерингу сторінки.
Щоб виправити помилку «Елемент з кореневим ідентифікатором вже існує»:
1. Знайдіть PHP-файл і рядок, який викидає виняток.
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) та додайте зворотне трасування та завершіть функцію перед тим, як кожен викличе виняток, наприклад:
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, перевірте вкладку мережі у вашому браузері (повторно надіслати запит Ajax).
Ви отримаєте зворотне трасування виконання коду, тому зверніть увагу на рядки, пов’язані з користувацькими/сторонніми модулями, наприклад:
![]()
Спробуйте вимкнути користувацькі функції з цих модулів, щоб побачити, чи вирішить це проблему. Як тільки ви визначите, який код модуля створює проблему, ви будете на крок ближче до вирішення проблеми.
Оновіть код, щоб це розширення працювало належним чином, зверніться до постачальника (розробника) розширення та попросіть виправлення, або вимкніть модуль.