Який спосіб налагодження винятків, пов’язаних із xml?


12

Я кодую Magento 2 в gvim, і я новачок у Magento 2.

Багато разів я намагався налагоджувати помилки, пов’язані з xml, ну, кожен раз лише з удачею. Але подібні ситуації мене дуже засмучують: ти не знаєш, де знаходиться файл, що викликає цю помилку, і налагоджувач не каже нічого.

Візьміть наступне: я розумію: XML-файл недійсний. Насправді я створив модуль, який має module.xml, route.xml, config.xml, {layout} .xml, di.xml під ним тощо або перегляд / макет dirs. Рядок файлу 12/89 / .. недійсний? згенерований / злитий? Я втрачений, тому що не знаходжу нічого в var / generated, і командний рядок перестає працювати. Який спосіб налагодження знайти те, що ця помилка.?

Будь-яка допомога вдячна.

Фатальна помилка: Uncaught Magento \ Framework \ Exception \ LocalizedException: Недійсний елемент документа 'item': Визначення типу є абстрактним. Рядок: 12 елемент "елемент", атрибут "ім'я": XPath "@ ім'я" поля ключового обмеження ідентичності ключа "itemName" оцінює набір вузлів з більш ніж одним членом. Рядок: 89 елемент "елемент": Не всі поля обмеження ідентичності ключа "itemName" оцінюють до вузла. Рядок: 89 елемент "елемент", атрибут "ім'я": XPath '@ ім'я' поля ключового обмеження ідентичності ключа 'itemName' оцінює до набору вузлів з більш ніж одним членом. Рядок: 90 елемент "елемент": Не всі поля обмеження ідентичності ключа "itemName" оцінюються до вузла. Рядок: 90 в /var/www/html/lib/internal/Magento/Framework/Config/Reader/Filesystem.php:


2
Заглиблюватися головою об стіну ...
tjons

спосіб "налагодити" те, що насправді полягає у використанні наданих xsd (також це означає використовувати phpstorm) або просто проб і помилок. Ви можете, можливо, написати власний сценарій перевірки xsd
Девід Верхолен

Відповіді:


4

Викинутий виняток повідомляє, що ви використовуєте елемент, у <item />якому вам заборонено використовувати. Так що так, ваша проблема, ймовірно, пов'язана з XML.

Перше, що я роблю, щоб переконатися, що я пишу дійсний XML, - це встановити мій IDE, щоб він міг правильно зіставити XSD-схеми. У PhpStorm ви можете це зробити, скориставшись помічником, залишеним у xsiпросторі -names:

встановити простір імен у PhpStorm

Якщо все налаштовано належним чином, ваш IDE встановить для вас завершення коду та попередить, якщо ви робите щось, що заборонено:

підказка 1

підказка 2

Я сподіваюся, що вам це допоможе.


Дякую. Я читаю вступ про підтримку xsd на devdocs, в якому сказано, що підтримується тільки phpstorm (через унікальний простір імен? Через phpstorm витрачається занадто багато пам’яті на моєму робочому столі Fedora, я вирішую gvim, до якого я звик. Хоча я переходжу до vim 8, xml xsd все ще не підтримує mage2 'шлях.
robertshare

2
використовувати bin/magento dev:urn:generate .idea/misc.xmlдля генерації xsd відображення для PHPStorm. Він зможе вирішити всі шляхи до урн з xmls.
Сергій Іващенко
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.