Wie können Sie XML-bezogene Ausnahmen debuggen?

11

Ich codiere mit Magento 2 in gvim und bin neu in Magento 2.

Es gab viele Male Probleme mit dem Debuggen von XML-bezogenen Fehlern, jedes Mal nur mit etwas Glück. Aber Situationen wie diese machen mich wirklich wütend: Sie wissen nicht, wo sich die Datei befindet, die diesen Fehler verursacht, und der Debugger sagt es auch nicht.

Nehmen Sie Folgendes: Ich erhalte Folgendes: Eine XML-Datei ist ungültig. Eigentlich habe ich ein Modul erstellt, das unter module.xml, route.xml, config.xml, {layout} .xml, di.xml usw. oder view / layout dirs steht. Welche Zeile 12/89 / .. ist ungültig? die generierte / zusammengeführte? Ich bin verloren, weil ich in var / generate nichts finde und die Befehlszeile nicht mehr funktioniert. Was ist der Debugging-Weg, um herauszufinden, was dieser Fehler ist?

Jede Hilfe wird geschätzt.

Schwerwiegender Fehler: Nicht erfasstes Magento \ Framework \ Exception \ LocalizedException: Ungültiges Dokumentelement 'Element': Die Typdefinition ist abstrakt. Zeile: 12 Element 'item', Attribut 'name': Der XPath '@name' eines Felds mit der Schlüsselidentitätsbeschränkung 'itemName' wird zu einem Knotensatz mit mehr als einem Mitglied ausgewertet. Zeile: 89 Element 'item': Nicht alle Felder der Schlüsselidentitätsbeschränkung 'itemName' werden als Knoten ausgewertet. Zeile: 89 Element 'item', Attribut 'name': Der XPath '@name' eines Felds mit der Schlüsselidentitätsbeschränkung 'itemName' wird zu einem Knotensatz mit mehr als einem Mitglied ausgewertet. Zeile: 90 Element 'item': Nicht alle Felder der Schlüsselidentitätsbeschränkung 'itemName' werden als Knoten ausgewertet. Zeile: 90 in /var/www/html/lib/internal/Magento/Framework/Config/Reader/Filesystem.php:

robertshare
quelle
2
Schlag meinen Kopf gegen die Wand ...
tjons
Der Weg, um diese wirklich zu "debuggen", besteht darin, die bereitgestellten xsd's zu verwenden (dies bedeutet auch, phpstorm zu verwenden) oder einfach nur Versuch und Irrtum. Sie könnten vielleicht ein eigenes xsd-Überprüfungsskript schreiben
David Verholen

Antworten:

4

Die ausgelöste Ausnahme zeigt an, dass Sie ein Element verwenden, <item />für das Sie kein Element verwenden dürfen. Also ja, Ihr Problem hängt wahrscheinlich mit XML zusammen.

Das erste, was ich tue, um sicherzustellen, dass ich gültiges XML schreibe, ist das Einrichten meiner IDE, damit die XSD-Schemata ordnungsgemäß zugeordnet werden können. In PhpStorm können Sie dies tun, indem Sie das Helfer-Ding verwenden, das im xsiNamespace verbleibt:

Namespace in PhpStorm festlegen

Wenn alles richtig eingestellt ist, richtet Ihre IDE die Code-Vervollständigung für Sie ein und warnt Sie, wenn Sie etwas tun, das nicht zulässig ist:

Tooltip 1

Tooltip 2

Ich hoffe das hilft dir einiges.

Giel Berkers
quelle
Vielen Dank. Ich habe die Einführung zur xsd-Unterstützung auf devdocs gelesen, in der steht, dass derzeit nur der phpstorm unterstützt wird (aufgrund seines einzigartigen Namespace-Stlye?). Da phpstorm zu viel Speicher auf meinem Fedora-Desktop verbraucht, entscheide ich mich für gvim, an das ich gewöhnt bin. Obwohl ich auf vim 8 aktualisiere, unterstützt die xml xsd mage2 immer noch nicht.
Robertshare
1
Verwenden Sie bin/magento dev:urn:generate .idea/misc.xmldiese Option, um eine xsd-Zuordnung für PHPStorm zu generieren. Es wird in der Lage sein, alle Urnenpfade von xmls aufzulösen.
Sergii Ivashchenko