การดีบักคอมโพเนนต์ ui


16

ฉันกำลังพยายามสร้างโมดูล CRUD ที่ใช้ส่วนประกอบ UI สำหรับกริดผู้ดูแลระบบและแบบฟอร์ม
ฉันเคยทำสิ่งนี้มาก่อนและได้ผล แต่อันนี้ต่างออกไปเล็กน้อยและดูเหมือนว่าฉันทำอะไรบางอย่างผิดพลาด
ปัญหาอยู่ในไฟล์คอมโพเนนต์ UI หรือบางคลาสที่อ้างอิงโดยไฟล์คอมโพเนนต์ UI ได้อย่างแน่นอน หากฉันลบการอ้างอิงองค์ประกอบ UI ออกจากไฟล์เลย์เอาต์เพจจะโหลด (โดยไม่มีกริดแน่นอน)
เมื่อรวมองค์ประกอบ UI หน้าจะว่างเปล่าและไม่มีข้อผิดพลาดในการบันทึกที่ใดก็ตามแม้ในโหมดนักพัฒนาซอฟต์แวร์

ฉันจะเริ่มต้นการดีบักการโหลดและการแสดงผลของคอมโพเนนต์ UI ได้อย่างไร


ฉันมีปัญหาเดียวกันเมื่อสองสามวันก่อน มันเป็นเพราะโครงสร้างโฟลเดอร์ผิดของโฟลเดอร์ ui_component จากนั้นก็มีปัญหาใน di.xml
Bhupendra Jadeja

ตอนนี้ฉันไม่สนใจข้อผิดพลาดของฉัน ฉันสนใจว่าจะแก้ไขข้อบกพร่องนี้ได้อย่างไรเนื่องจากอาจเกิดขึ้นในอนาคต
Marius

เป็นงานที่น่าเบื่อมากในการดีบัก XML ทุกครั้งที่ฉันพบข้อผิดพลาดในรายงานและ system.xml หวังว่าเราจะได้คำตอบจากทีมหลัก
Bhupendra Jadeja

คุณได้รับวิธีการดีบัก XML หรือไม่
Bhupendra Jadeja

1
ฉันพบจุดในแอปพลิเคชันที่ฉันสามารถเริ่มต้นได้ แต่ฉันยังไม่แน่ใจ แต่นั่นก็ไม่ใช่จุดที่ดีที่สุดที่จะทำ ฉันจะโพสต์คำตอบในวันนี้หรือวันพรุ่งนี้ถ้าฉันพบบางสิ่งที่แข็ง
Marius

คำตอบ:


12

สิ่งที่ฉันพบจนถึงขณะนี้คือเมื่อเรนเดอร์โครงร่างสแต็กนี้จะตามมา

  • \Magento\Framework\View\Layout::generateElements
  • \Magento\Framework\View\Layout\GeneratorPool::process

ตอนนี้ขึ้นอยู่กับชนิดของโครงร่างตัวสร้างโครงร่างที่แตกต่างกันถูกเรียกใช้

foreach ($this->generators as $generator) {
    $generator->process($readerContext, $generatorContext);
}

สำหรับองค์ประกอบ Ui ... ดำเนินการต่อสแต็ก:

  • \Magento\Framework\View\Layout\Generator\UiComponent::process()
  • \Magento\Framework\View\Layout\Generator\UiComponent::generateComponent()
  • \Magento\Framework\View\Element\UiComponentFactory::create()
  • \Magento\Ui\Model\Manager::prepareData()
  • \Magento\Ui\Model\Manager::evaluateComponents()
  • Magento\Framework\Data\Argument\InterpreterInterface::evaluate.

ที่นี่อีกครั้งมันขึ้นอยู่กับประเภทของอาร์กิวเมนต์ที่จำเป็นต้องตีความ
คุณสามารถหาล่ามได้ที่นี่lib/internal/Magento/Framework/Data/Argument/Interpreter/

นี่คือเท่าที่ฉันได้รับ
ฉันรู้ว่ามันไม่ใช่คำอธิบายที่สมบูรณ์ แต่นี่เป็นจุดที่คุณสามารถระบุได้ว่ามีบางอย่างผิดปกติกับองค์ประกอบ UI ของคุณหรือไม่


1

ลอง:

Source/vendor/magento/module-ui/Component/Wrapper/UiComponent.php

วิธี: protected function _toHtml()

ประมาณเริ่มต้นในบรรทัดที่ 57

แก้ไขข้อบกพร่อง$resultและควรประกอบด้วยส่วนประกอบทั้งหมดที่โหลด


0

วิธีเดียวที่ฉันสามารถแก้ไขข้อบกพร่องของส่วนประกอบ UI คือเพียงลบทุกอย่างออกจากส่วนประกอบ xml และเพิ่มรายการทีละรายการเพื่อให้แน่ใจว่าแอตทริบิวต์ได้รับการสนับสนุนใน xsd


1
ไฟล์ใช้ได้กับไฟล์ xsd และฉันแน่ใจว่ามีวิธีอื่นนอกเหนือจากการลบบิตของไฟล์ จะต้องมีสถานที่ที่ไฟล์ถูกโหลดและประมวลผล
Marius

0

คุณสามารถเริ่มต้นด้วยการใช้ css เพื่อเริ่มการดีบั๊กคุณสามารถใช้ไฟล์ theme.less ภายใต้แอพ / design / frontend / Mgs / molly / web / css เช่นเปลี่ยนสีพื้นฐานซึ่งเป็น @ base-color: @ 7c7bad

หลังจากเปลี่ยนรหัสใด ๆ ที่คุณลบไดเรกทอรี var คุณมีเนื้อหาที่ชัดเจนภายใต้ไดเรกทอรีส่วนหน้าของ pub / static / frontend /

ที่คำสั่ง hit ล่าสุดในการตั้งค่า cmd php bin / magento: static-content: deploy


css เกี่ยวข้องกับการแก้ไขข้อบกพร่องของส่วนประกอบ UI อย่างไร
Marius

คุณสามารถเปลี่ยนเค้าโครงหรือสีของมัน @Marius
vnnogile_user

สิ่งนี้ไม่เกี่ยวกับคำถาม ฉันไม่ได้ถามเกี่ยวกับการเปลี่ยนสี
Marius

0

ฉันจะเริ่มต้นด้วย:

Magento\Ui\TemplateEngine\Xhtml\Result->__toString( )

นี่คือสถานที่ที่ดึง Ui XML เข้าด้วยกัน ดังนั้นควรเป็นจุดเริ่มต้นสำหรับการดีบัก Ui XML

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.