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:
Antworten:
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
xsi
Namespace verbleibt: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:
Ich hoffe das hilft dir einiges.
quelle
bin/magento dev:urn:generate .idea/misc.xml
diese Option, um eine xsd-Zuordnung für PHPStorm zu generieren. Es wird in der Lage sein, alle Urnenpfade von xmls aufzulösen.