Magento 2: apa manfaat menggunakan komponen kisi UI melebihi standar Grid.php?

23

Jadi Magento 2 memperkenalkan Komponen UI.

Salah satunya adalah Grid Komponen UI (Anda dapat menemukan informasi lebih lanjut tentang hal ini di sini: Penjelasan Grid Komponen UI di Magento 2 )

Saat membuat modul khusus, saya tetap menggunakan metode Magento 1 lama, saya telah membuat Grid.phpfile yang menangani kisi adminhtml saya.

Saya bertanya-tanya apa manfaat menggunakan kisi komponen UI daripada Grid.phpmetode?

Raphael di Digital Pianism
sumber

Jawaban:

23

Saya akan daftar yang saya temukan sejauh ini.

  • kemungkinan diperpanjang. Anda dapat menambahkan xml baru untuk menambahkan kolom baru.
  • konfigurasi lebih dari kode. Lebih sedikit kode untuk logika, lebih banyak xml deklaratif.
  • lebih sedikit lalu lintas melalui jaringan. Xml diubah menjadi json dan dikirim ke browser. Juga setiap jenis bidang dikirim hanya sekali ke browser dan pembuatan formulir terjadi pada klien.
  • sistem baru memungkinkan penataan ulang kolom dan penghematan keadaan.

Di luar topik: Saya mendapat "info orang dalam" bahwa rencananya adalah memindahkan semua kisi dan formulir ke komponen UI. Jadi, Anda harus mulai menggunakannya.

Marius
sumber
Tidak terlalu luar biasa, itu info yang luar biasa, jenis umpan balik yang saya butuhkan
Raphael at Digital Pianism
@Raphael Anda dapat menyimpan bookmark dengan ui_component. Konfigurasi melalui xml. Detail lebih lanjut dapat Anda lihat di tabel
ui_bookmark
22

@ raphael-at-digital-pianism meminta saya untuk memposting daftar hal yang menurut saya salah dengan komponen XML grid adminhtml XML, jadi begini:

Apa yang salah dengan adminhtml grid UI komponen XML?

  • Siklus umpan balik yang lambat selama dev
  • Sulit dimengerti
  • Sulit di-debug jika ada yang salah (kebanyakan hanya dengan membandingkan dengan XML dalam inti)
  • Banyak detail implementasi yang terbuka
  • Mendorong salin dan tempel
  • XML tidak dimaksudkan untuk dibaca dan ditulis manusia
  • Sulit untuk diuji
  • Tidak jelas opsi apa yang tersedia
  • Banyak boilerplate DAN sihir (terburuk dari kedua dunia)
  • Ditambah dengan gagasan menampilkan data tabel DB
  • Banyak string nama yang digandakan dalam file

"Datang dengan solusi yang lebih baik," katamu?

Yah, belum. Tapi di sini ada gagasan kasar bagaimana saya, sebagai pengembang, ingin dapat membuat kisi dan formulir adminhtml.

  • Buat implementasi GridDataSourceInterface
  • Komponen grid menggunakan GridDataSourceInterface::getGridItemType()metode untuk mengambil nama kelas atau nama antarmuka
  • Antarmuka tercermin dan semua getter digunakan untuk menentukan kolom yang memungkinkan
  • Jenis kolom disimpulkan dari jenis kembali
  • Jenis yang tidak dapat disimpulkan secara otomatis karena jenis kolom yang valid diabaikan.
  • The GridDataSourceInterfacepelaksanaan Misalnya dapat digunakan untuk mengkonfigurasi non-default visibilitas dan kolom jenis menggunakan metode deskriptif yang bagus di mana diperlukan.

Keuntungan-keuntungan:

  • Definisi bantuan grid (dan bentuk) IDE dibantu melalui metode pelengkapan otomatis
  • Default yang masuk akal
  • Implementasi agnostik
  • Untuk entitas sederhana, hanya sedikit kode yang perlu ditulis
  • Dibandingkan dengan pendekatan XML, tidak ada fitur yang hilang
  • Dapat diperpanjang melalui interceptor
  • Jika antarmuka kelas dilakukan mendefinisikan kotak dan bentuk juga bisa sama deklaratifnya dengan XML (tapi jauh lebih sederhana)
  • Cocokkan "cara berpikir" Magento 2 untuk kelas kontrak layanan
  • Tidak perlu mengubah interaksi saat ini dengan kode frontend yang diperlukan (lalu lintas yang sama melalui kabel)
  • Penyortiran kolom frontend dan konfigurasi dapat terus berfungsi seperti sekarang
  • TANPA XML MOAR

Mengenai pertanyaan awal, saya tidak berpikir bahwa menggunakan gaya Magento 1 yang lama, blok untuk membangun antarmuka adminhtml itu adalah hal yang benar untuk dilakukan.
Saya hanya menganjurkan deklarasi grid berbasis XML baru harus diganti dengan sesuatu yang lebih baik secepat mungkin.

Vinai
sumber
? itu benar bahwa sulit untuk memahami UI component.Are Anda berpikir Magento akan datang dengan solusi lain di UI jaringan komponen i masa .Ini menjadi kepala Cache dengan saya ....... Donot menemukan blog yang tepat (:
Amit Bera