คุณมีวิธีในการดีบักข้อยกเว้นเกี่ยวกับ xml อย่างไร


11

ฉันกำลังเขียนโค้ดกับ Magento 2 ใน gvim และฉันใหม่กับ Magento 2

มีหลายครั้งที่ฉันพยายามแก้ไขข้อผิดพลาดที่เกี่ยวข้องกับ xml ทุกครั้งที่มีโชคเท่านั้น แต่สถานการณ์เช่นนี้ทำให้ฉันรู้สึกไม่สบายใจจริงๆ: คุณไม่รู้ว่าไฟล์อยู่ที่ไหนที่ทำให้เกิดข้อผิดพลาดนี้และดีบักเกอร์จะไม่บอก

รับต่อไปนี้ฉันจะได้รับ: ไฟล์ xml ไม่ถูกต้อง ที่จริงฉันได้สร้างโมดูลที่มี module.xml, route.xml, config.xml, {layout} .xml, di.xml ภายใต้มันเป็นต้นหรือดู / เค้าโครง dirs ไฟล์ 12/89 / .. ไฟล์ใดที่ไม่ถูกต้อง? ที่สร้าง / รวมหรือไม่ ฉันหลงทางเพราะฉันไม่พบสิ่งใดใน var / created และ commandline หยุดทำงาน อะไรคือวิธีการแก้จุดบกพร่องเพื่อค้นหาสิ่งที่เป็นข้อผิดพลาดนี้.

ความช่วยเหลือใด ๆ ที่ชื่นชม

ข้อผิดพลาดร้ายแรง: Uncaught Magento \ Framework \ Exception \ LocalizedException: องค์ประกอบเอกสารไม่ถูกต้อง 'รายการ': การกำหนดประเภทเป็นนามธรรม บรรทัด: 12 องค์ประกอบ 'รายการ', แอตทริบิวต์ 'ชื่อ': XPath '@name' ของฟิลด์ของข้อ จำกัด คีย์เอกลักษณ์ 'itemName' จะประเมินเป็นโหนดที่มีสมาชิกมากกว่าหนึ่งราย บรรทัด: 89 องค์ประกอบ 'รายการ': ไม่ใช่ทุกฟิลด์ของคีย์ข้อมูล - ข้อ จำกัด 'itemName' ประเมินเป็นโหนด บรรทัด: 89 องค์ประกอบ 'รายการ', แอตทริบิวต์ 'ชื่อ': XPath '@name' ของฟิลด์ของข้อ จำกัด คีย์เอกลักษณ์ 'itemName' จะประเมินเป็นโหนดที่ตั้งค่าด้วยสมาชิกมากกว่าหนึ่งราย บรรทัด: 90 องค์ประกอบ 'รายการ': ไม่ใช่ทุกฟิลด์ของคีย์เอกลักษณ์ - ข้อ จำกัด 'itemName' ประเมินเป็นโหนด บรรทัด: 90 ใน /var/www/html/lib/internal/Magento/Framework/Config/Reader/Filesystem.php:


2
กระแทกหัวฉันกับกำแพง ...
tjons

วิธีที่จะ "debug" สิ่งเหล่านั้นคือการใช้ xsd ที่ให้มา (เช่นนี้หมายถึงการใช้ phpstorm) หรือเพียงแค่การลองผิดลองถูก คุณอาจจะเขียนสคริปต์ตรวจสอบ xsd ของตัวเอง
David Verholen

คำตอบ:


4

ข้อยกเว้นที่เกิดขึ้นจะบอกคุณว่าคุณกำลังใช้องค์ประกอบ<item />ที่คุณไม่ได้รับอนุญาตให้ใช้งาน ดังนั้นใช่ปัญหาของคุณอาจเกี่ยวข้องกับ XML

สิ่งแรกที่ฉันทำเพื่อให้แน่ใจว่าฉันเขียน XML ที่ถูกต้องคือการตั้งค่า IDE ของฉันเพื่อให้สามารถแมป XSD-schemes ได้อย่างถูกต้อง ใน PhpStorm คุณสามารถทำได้โดยใช้ตัวช่วยเหลือไว้ที่xsi-namespace:

กำหนด namespace ใน PhpStorm

เมื่อตั้งค่าทั้งหมดอย่างถูกต้องแล้ว IDE ของคุณจะติดตั้งรหัสให้คุณและเตือนคุณหากคุณทำสิ่งที่ไม่ได้รับอนุญาต:

เคล็ดลับเครื่องมือ 1

เคล็ดลับเครื่องมือ 2

ฉันหวังว่านี่จะช่วยคุณได้บ้าง


ขอบคุณ ฉันอ่านคำแนะนำเกี่ยวกับการสนับสนุน xsd บน devdocs ซึ่งระบุว่าตอนนี้สนับสนุน phpstorm เท่านั้น (เนื่องจากเนมสเปซเฉพาะของ stlye?) เนื่องจาก phpstorm ใช้หน่วยความจำมากเกินไปบนเดสก์ท็อปของฉันฉันจึงตัดสินใจ gvim ที่ฉันคุ้นเคย แม้ว่าฉันจะอัพเกรดเป็นกลุ่ม 8 แต่ xml xsd ยังคงไม่รองรับ mage2
robertshare

2
ใช้bin/magento dev:urn:generate .idea/misc.xmlเพื่อสร้างการทำแผนที่ xsd สำหรับ PHPStorm มันจะสามารถแก้ไขเส้นทางโกศทั้งหมดจาก xmls
Sergii Ivashchenko
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.