Jaki jest Twój sposób debugowania wyjątków związanych z XML?


11

Koduję z Magento 2 w gvim i jestem nowy w Magento 2.

Wiele razy próbowałem debugować błędy związane z XML, cóż, za każdym razem przy odrobinie szczęścia. Ale takie sytuacje naprawdę mnie denerwują: nie wiesz, gdzie jest plik, który powoduje ten błąd, a debugger nie mówi ani jednego, ani drugiego.

Rozumiem, co następuje: plik xml jest nieprawidłowy. faktycznie utworzyłem moduł, który zawiera module.xml, trasy.xml, config.xml, {layout} .xml, di.xml pod nim itp. lub katalogi widok / układ. Który wiersz pliku 12/89 / .. jest nieprawidłowy? wygenerowany / scalony? Zgubiłem się, ponieważ nie znajduję nic w zmiennej var / generowane, a linia poleceń przestaje działać. Jaki jest sposób debugowania, aby dowiedzieć się, co to za błąd.

Każda pomoc jest mile widziana.

Błąd krytyczny: Uncaught Magento \ Framework \ Exception \ LocalizedException: Nieprawidłowy element dokumentu „element”: definicja typu jest abstrakcyjna. Wiersz: 12 elementów „item”, atrybut „name”: XPath „@name” pola kluczowego ograniczenia tożsamości „itemName” jest przetwarzany na zbiór węzłów z więcej niż jednym elementem. Wiersz: 89 Element „item”: Nie wszystkie pola ograniczenia tożsamości klucza „itemName” są przetwarzane w węźle. Wiersz: 89 Element „item”, atrybut „name”: XPath „@name” pola kluczowego ograniczenia tożsamości „itemName” jest przetwarzany na zbiór węzłów z więcej niż jednym elementem. Wiersz: 90 Element „item”: Nie wszystkie pola ograniczenia tożsamości klucza „itemName” są przetwarzane w węźle. Linia: 90 w /var/www/html/lib/internal/Magento/Framework/Config/Reader/Filesystem.php:


2
Uderzam głową o ścianę ...
tjons

sposobem na "debugowanie" tych naprawdę jest użycie dostarczonego xsd (także oznacza to użycie phpstorma) lub po prostu próba i błąd. Możesz napisać własny skrypt sprawdzający xsd
David Verholen,

Odpowiedzi:


4

Zgłoszony wyjątek informuje, że używasz elementu, w <item />którym nie możesz go użyć. Więc tak, twój problem jest prawdopodobnie związany z XML.

Pierwszą rzeczą, którą robię, aby upewnić się, że piszę prawidłowy kod XML, jest skonfigurowanie IDE, aby poprawnie mapować schematy XSD. W PhpStorm możesz to zrobić, używając pomocnika pozostawionego do xsi-namespace:

ustaw przestrzeń nazw w PhpStorm

Gdy wszystko jest ustawione poprawnie, twoje IDE skonfiguruje dla ciebie uzupełnianie kodu i ostrzeże cię, jeśli robisz coś, co jest niedozwolone:

etykietka 1

etykietka 2

Mam nadzieję, że ci to pomoże.


Dzięki. Przeczytałem wprowadzenie na temat obsługi xsd na devdocs, które mówi, że obecnie wspierane są tylko phpstorm (z powodu jego unikalnej przestrzeni nazw?). Ze względu na to, że phpstorm zużywa zbyt dużo pamięci na pulpicie Fedory, postanawiam uruchomić gvim, do którego jestem przyzwyczajony. Chociaż aktualizuję do vim 8, xml xsd nadal nie obsługuje mage2.
robertshare,

2
służy bin/magento dev:urn:generate .idea/misc.xmldo generowania odwzorowania xsd dla PHPStorm. Będzie mógł rozwiązać wszystkie ścieżki urn z plików XML.
Sergii Iwaszczenko
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.