Magento 2: ประโยชน์ของการใช้ส่วนประกอบกริด UI บน Grid.php มาตรฐานคืออะไร


23

Magento 2 ได้แนะนำส่วนประกอบของ UI

หนึ่งในนั้นคือ UI Component Grid (คุณสามารถหาข้อมูลเพิ่มเติมได้ที่นี่: คำอธิบายของ UI Component Grid ใน Magento 2 )

เมื่อสร้างโมดูลที่กำหนดเองฉันติดกับวิธี Magento 1 เก่าฉันได้สร้างGrid.phpไฟล์ที่จัดการกริด adminhtml ของฉัน

ฉันสงสัยว่าประโยชน์ของการใช้กริดส่วนประกอบ UI แทนGrid.phpวิธีการคืออะไร?

คำตอบ:


23

ฉันจะแสดงรายการสิ่งที่ฉันพบจนถึง

  • ขยาย คุณสามารถเพิ่ม xml ใหม่เพื่อเพิ่มคอลัมน์ใหม่
  • การกำหนดค่ามากกว่ารหัส รหัสน้อยลงสำหรับตรรกะ xml ที่เปิดเผยมากขึ้น
  • ทราฟฟิกน้อยผ่านเครือข่าย xml ถูกแปลงเป็น json และส่งไปยังเบราว์เซอร์ นอกจากนี้แต่ละประเภทเขตข้อมูลจะถูกส่งเพียงครั้งเดียวไปยังเบราว์เซอร์และการสร้างแบบฟอร์มที่เกิดขึ้นกับลูกค้า
  • ระบบใหม่ช่วยให้การเรียงลำดับคอลัมน์ใหม่และการบันทึกสถานะ

ปิดหัวข้อ: ฉันได้รับ "ข้อมูลภายใน" ว่าแผนจะย้ายกริดและฟอร์มทั้งหมดไปยังคอมโพเนนต์ UI ดังนั้นคุณควรเริ่มใช้พวกเขา


ไม่ใช่หัวข้อที่เป็นข้อมูลที่ยอดเยี่ยมความคิดเห็นประเภทที่ฉันต้องการ
Raphael at Digital Pianism

@Raphael คุณสามารถบันทึกบุ๊คมาร์คได้โดย ui_component การกำหนดค่าผ่านทาง xml รายละเอียดเพิ่มเติมคุณสามารถดูได้ในตาราง
ui_bookmark

22

@ raphael-at-digital-pianism ขอให้ฉันโพสต์รายการสิ่งที่ฉันคิดว่าผิดกับ XML UI ของ adminhtml grid UI ดังนั้นต่อไปนี้:

เกิดอะไรขึ้นกับส่วนประกอบ XML ของ adminhtml grid UI

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

"คิดหาทางออกที่ดีกว่า"

ฉันก็ยังไม่ได้ แต่นี่เป็นความคิดคร่าวๆว่าฉันในฐานะนักพัฒนาจะต้องการสร้างกริดและรูปแบบ adminhtml ได้อย่างไร

  • สร้างการนำไปปฏิบัติ GridDataSourceInterface
  • ส่วนประกอบกริดใช้GridDataSourceInterface::getGridItemType()วิธีการดึงชื่อคลาสหรือชื่ออินเตอร์เฟส
  • อินเทอร์เฟซถูกสะท้อนและ getters ทั้งหมดถูกใช้เพื่อกำหนดคอลัมน์ที่เป็นไปได้
  • ชนิดคอลัมน์ถูกอนุมานจากชนิดส่งคืน
  • ประเภทที่ไม่สามารถอนุมานได้โดยอัตโนมัติเนื่องจากประเภทคอลัมน์ที่ถูกต้องจะถูกละเว้น
  • GridDataSourceInterfaceเช่นการดำเนินการสามารถใช้ในการมองเห็นและการกำหนดค่าคอลัมน์ไม่ใช่ค่าเริ่มต้นประเภทโดยใช้วิธีการสื่อความหมายที่ดีที่จำเป็น

ประโยชน์ที่ได้รับ:

  • IDE ช่วยนิยามของกริด (และแบบฟอร์ม) ผ่านวิธีการเติมข้อความอัตโนมัติ
  • ค่าเริ่มต้นที่เหมาะสม
  • การดำเนินการไม่เชื่อเรื่องพระเจ้า
  • สำหรับเอนทิตีอย่างง่ายจะต้องเขียนโค้ดเพียงเล็กน้อยเท่านั้น
  • เปรียบเทียบกับวิธี XML แล้วไม่มีการสูญเสียคุณสมบัติ
  • ความสามารถในการขยายผ่านตัวรับ
  • ถ้าคลาสอินเทอร์เฟซเสร็จสิ้นการกำหนดกริดและแบบฟอร์มสามารถเป็นเพียงการประกาศเป็น XML (แต่ง่ายกว่ามาก)
  • ตรงกับ "วิธีคิด" ของวีโอไอพีสำหรับชั้นสัญญาบริการ
  • ไม่มีการเปลี่ยนแปลงการโต้ตอบปัจจุบันกับรหัสส่วนหน้า (ทราฟฟิกข้ามเส้นลวดเดียวกัน)
  • การเรียงลำดับคอลัมน์ส่วนหน้าและการกำหนดค่าสามารถทำงานต่อไปได้เหมือนเดิม
  • ไม่มี MOAR XML

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


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