Apa cara Anda debugging pengecualian terkait xml?

11

Saya mengkode dengan Magento 2 di gvim dan saya baru mengenal Magento 2.

Ada banyak kali saya berjuang untuk men-debug kesalahan terkait xml, well, setiap kali hanya dengan keberuntungan. Tetapi situasi seperti ini membuat saya sangat kesal: Anda tidak tahu di mana file yang menyebabkan kesalahan ini, dan debugger tidak memberi tahu keduanya.

Ambil yang berikut yang saya dapatkan ini: file xml tidak valid. sebenarnya saya sudah membuat modul yang memiliki module.xml, routes.xml, config.xml, {layout} .xml, di.xml di bawahnya dll atau lihat / tata letak direktori. Baris file 12/89 / .. mana yang tidak valid? yang dihasilkan / digabung? Saya tersesat karena saya tidak menemukan apa pun di var / generate, dan commandline berhenti berfungsi. Apa cara debugging untuk menemukan kesalahan ini.?

Bantuan apa pun dihargai.

Kesalahan fatal: Uncaught Magento \ Framework \ Exception \ LocalizedException: 'Item' Elemen Dokumen Tidak Valid: Definisi jenisnya abstrak. Baris: 12 Elemen 'item', atribut 'name': XPath '@name' dari bidang kendala-identitas utama 'itemName' dievaluasi menjadi simpul-set dengan lebih dari satu anggota. Baris: 89 Elemen 'item': Tidak semua bidang 'keyName' kendala identitas mengevaluasi ke sebuah node. Baris: 89 Elemen 'item', atribut 'name': XPath '@name' dari bidang kunci-kendala identitas 'itemName' mengevaluasi ke set-simpul dengan lebih dari satu anggota. Baris: 90 Elemen 'item': Tidak semua bidang 'keyName' kendala identitas mengevaluasi ke sebuah node. Baris: 90 di /var/www/html/lib/internal/Magento/Framework/Config/Reader/Filesystem.php:

robertshare
sumber
2
Membenturkan kepala saya ke dinding ...
tjons
cara untuk "men-debug" yang sebenarnya adalah dengan menggunakan xsd yang disediakan (juga artinya menggunakan phpstorm) atau hanya coba-coba. Anda mungkin dapat menulis skrip pemeriksaan xsd sendiri
David Verholen

Jawaban:

4

Pengecualian yang dilontarkan memberi tahu Anda bahwa Anda menggunakan elemen di <item />mana Anda tidak diizinkan menggunakannya. Jadi ya, masalah Anda mungkin terkait XML.

Hal pertama yang saya lakukan untuk memastikan saya menulis XML yang valid adalah mengatur IDE saya sehingga dapat memetakan skema XSD dengan benar. Di PhpStorm Anda bisa melakukan ini dengan menggunakan helper-thingy yang tersisa ke xsi-namespace:

mengatur namespace di PhpStorm

Ketika semua diatur dengan benar, IDE Anda akan mengatur penyelesaian kode untuk Anda dan memperingatkan Anda jika Anda melakukan sesuatu yang tidak diperbolehkan:

tooltip 1

tooltip 2

Saya harap ini membantu Anda.

Giel Berkers
sumber
Terima kasih. Saya membaca pengantar tentang dukungan xsd pada devdocs yang mengatakan saat ini hanya phpstorm yang didukung (karena stlye namespace yang unik?). Karena phpstorm menghabiskan terlalu banyak memori di desktop fedora saya, saya memutuskan untuk gvim yang sudah biasa saya gunakan. Meskipun saya meningkatkan ke vim 8, xml xsd masih tidak mendukung cara mage2.
robertshare
2
gunakan bin/magento dev:urn:generate .idea/misc.xmluntuk menghasilkan pemetaan xsd untuk PHPStorm. Ini akan dapat menyelesaikan semua jalur guci dari xmls.
Sergii Ivashchenko