Qual é a sua maneira de depurar exceções relacionadas a xml?

11

Estou codificando com Magento 2 no gvim e sou novo no Magento 2.

Houve muitas vezes que lutei para depurar erros relacionados a xml, bem, cada vez com apenas sorte. Mas situações como essa me deixam realmente chateada: você não sabe onde está o arquivo que está causando esse erro e o depurador também não diz.

Pegue o seguinte e recebo o seguinte: um arquivo xml é inválido. na verdade, eu criei um módulo que possui module.xml, routes.xml, config.xml, {layout} .xml, di.xml sob o arquivo etc ou dirs de exibição / layout. Qual linha do arquivo 12/89 / .. é inválida? o gerado / mesclado? Estou perdido porque não encontro nada em var / gerado e a linha de comando para de funcionar. Qual é a maneira de depuração para encontrar qual é esse erro?

Qualquer ajuda é apreciada.

Erro fatal: Magento \ Framework \ Exception \ LocalizedException não capturado: Elemento de documento inválido 'item': A definição do tipo é abstrata. Linha: 12 Elemento 'item', atributo 'nome': O XPath '@name' de um campo da restrição de identidade de chave 'itemName' é avaliado para um conjunto de nós com mais de um membro. Linha: 89 Elemento 'item': nem todos os campos da restrição de identidade de chave 'itemName' são avaliados para um nó. Linha: 89 Elemento 'item', atributo 'nome': O XPath '@name' de um campo da restrição de identidade de chave 'itemName' é avaliado para um conjunto de nós com mais de um membro. Linha: 90 Elemento 'item': nem todos os campos da restrição de identidade de chave 'itemName' são avaliados para um nó. Linha: 90 em /var/www/html/lib/internal/Magento/Framework/Config/Reader/Filesystem.php:

robertshare
fonte
2
Batendo a cabeça contra a parede ...
tjons
a maneira de "depurar" esses itens é realmente usar o xsd fornecido (também significa usar o phpstorm) ou apenas tentativa e erro. Talvez você possa escrever um script de verificação de xsd
David Verholen

Respostas:

4

A exceção lançada informa que você está usando um elemento em <item />que não tem permissão para usá-lo. Então, sim, seu problema provavelmente está relacionado a XML.

A primeira coisa que faço para garantir que escrevo XML válido é configurar meu IDE para que ele possa mapear corretamente os esquemas XSD. No PhpStorm, você pode fazer isso usando o elemento auxiliar deixado no xsi-namespace:

definir namespace no PhpStorm

Quando tudo estiver definido corretamente, seu IDE configurará a conclusão do código para você e o alertará se você estiver fazendo algo que não é permitido:

dica 1

dica 2

Espero que isto te ajude um pouco.

Giel Berkers
fonte
Obrigado. Eu li a introdução sobre o suporte ao xsd no devdocs, que diz agora que apenas o phpstorm é suportado (por causa de seu espaço de nome exclusivo stlye?). Devido ao phpstorm consumir muita memória na área de trabalho do fedora, eu resolvo o gvim com o qual estou acostumado. Embora eu atualize para o vim 8, o xml xsd ainda não suporta o modo mage2 '.
precisa saber é o seguinte
2
use bin/magento dev:urn:generate .idea/misc.xmlpara gerar mapeamento xsd para PHPStorm. Ele poderá resolver todos os caminhos de urna dos xmls.
Sergii Ivashchenko