Как вы отлаживаете исключения, связанные с XML?

11

Я пишу с Magento 2 в gvim, и я новичок в Magento 2.

Я много раз пытался отладить ошибки, связанные с XML, ну, каждый раз, только с удачей. Но подобные ситуации меня очень расстраивают: вы не знаете, где находится файл, вызывающий эту ошибку, а отладчик не сообщает ни того, ни другого.

Возьмите следующее, я получаю это: XML-файл недействителен. на самом деле я создал модуль, в котором есть module.xml, rout.xml, config.xml, {layout} .xml, di.xml и т. д. или каталоги view / layout. Какая строка файла 12/89 / .. неверна? сгенерированный / объединенный? Я заблудился, потому что я ничего не нахожу в Var / Generated, и командная строка перестает работать. Какой способ отладки, чтобы найти, что это за ошибка?

Любая помощь приветствуется.

Неустранимая ошибка: Uncaught Magento \ Framework \ Exception \ LocalizedException: недопустимый элемент документа 'item': определение типа является абстрактным. Строка: 12 Элемент 'item', атрибут 'name': XPath '@name' поля ключевого ограничения идентичности 'itemName' оценивает набор узлов с более чем одним членом. Строка: 89 Элемент 'item': не все поля ключевого идентификатора-ограничения 'itemName' оцениваются как узел. Строка: 89 Элемент 'item', атрибут 'name': XPath '@name' поля ключевого ограничения идентичности 'itemName' оценивает набор узлов с более чем одним членом. Строка: 90 Элемент 'item': не все поля ключевого идентификатора-ограничения 'itemName' оцениваются для узла. Строка: 90 в /var/www/html/lib/internal/Magento/Framework/Config/Reader/Filesystem.php:

robertshare
источник
2
Бьюсь головой о стену ...
tjons
способ "отладки" тех, кто на самом деле, это использовать предоставленные xsd (также это означает использование phpstorm) или просто методом проб и ошибок. Вы могли бы написать собственный скрипт проверки xsd
Дэвид Верхолен

Ответы:

4

Выданное исключение говорит вам, что вы используете элемент, <item />где вам не разрешено его использовать. Так что да, ваша проблема, вероятно, связана с XML.

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

установить пространство имен в 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. Он сможет разрешить все пути urn из xmls.
Сергей Иващенко