@ 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
GridDataSourceInterface
pelaksanaan 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.