Magento 2: UI ızgara bileşenlerini standart Grid.php üzerinden kullanmanın faydaları nelerdir?


23

Böylece Magento 2, UI Bileşenlerini tanıttı.

Bunlardan biri UI Bileşen Izgarasıdır (bu konuda daha fazla bilgiyi burada bulabilirsiniz: Magento 2'deki UI Bileşen Izgarasının Açıklaması )

Özel bir modül oluştururken eski Magento 1 metoduna Grid.phpsadık kaldım, adminhtml ızgaramı idare eden bir dosya oluşturdum .

Grid.phpMetod yerine UI bileşenleri ızgarasını kullanmanın faydalarını merak ediyorum.

Yanıtlar:


23

Şimdiye kadar bulduğumları listeleyeceğim.

  • genişletilebilirlik. Yeni sütun eklemek için yeni bir xml ekleyebilirsiniz.
  • kod üzerinden yapılandırma. Mantık için daha az kod, daha fazla bilgi veren xmls.
  • ağ üzerinden daha az trafik. Xml bir json'a dönüştürülür ve tarayıcıya gönderilir. Ayrıca her alan türü tarayıcıya yalnızca bir kez gönderilir ve form oluşturma istemcide gerçekleşir.
  • Yeni sistem sütunların yeniden sıralanmasına ve durum tasarrufuna izin verir.

Konu Dışı: Planın tüm ızgaraları ve formları UI bileşenlerine taşımak olduğunu belirten "içsel bilgiler" aldım. Yani onları kullanmaya başlamalısın.


Konu dışı değil, bu harika bir bilgi, tam da ihtiyacım olan geribildirim türü
— Digital Pianism'de Raphael

@Raphael yer imlerini ui_component ile kaydedebilirsiniz. Xml üzerinden konfigürasyon ui_bookmark tablosunda görebileceğiniz diğer detaylar
— mrtuvn

22

@ raphael-at-digital-pianism, adminhtml grid UI bileşen XML'sinde yanlış olduğunu düşündüğüm şeyler listesini bulamamı istedi, işte şöyle:

Adminhtml grid UI bileşen XML'in nesi yanlış?

  • Dev sırasında yavaş geribildirim döngüsü
  • Anlaşılması zor
  • Bir şeyler ters giderse hata ayıklamak zor (çoğunlukla çekirdekteki XML ile kıyaslayarak)
  • Çok fazla uygulama detayı ortaya çıktı
  • Kopyala ve yapıştır'ı teşvik eder
  • XML, insanların okuması ve yazması için yapılmamıştır.
  • Test etmek zor
  • Başka hangi seçeneklerin mevcut olduğu belli değil
  • Çok sayıda kazan plakası VE sihir (her iki dünyanın da en kötüsü)
  • DB tablo verilerini görüntüleme fikrine birleşti
  • Dosyadaki birçok çoğaltılmış ad dizesi

"Daha iyi bir çözüm bul" mu diyorsun?

Ben yapmadım. Fakat işte, bir geliştirici olarak, nasıl adminhtml ızgaraları ve formları oluşturmak istediğim konusunda zor bir fikir.

  • Bir uygulamasını oluşturun GridDataSourceInterface
  • Izgara bileşeni, GridDataSourceInterface::getGridItemType()bir sınıf adı veya arayüz adı almak için bir yöntem kullanır.
  • Arayüz üzerine yansır ve olası alıcıları belirlemek için tüm alıcılar kullanılır
  • Sütun türleri, dönüş türlerinden çıkarılır
  • Geçerli sütun türleri olarak otomatik olarak çıkarılamayan türler yoksayılır.
  • GridDataSourceInterfaceUygulama örneği gerekli güzel tanımlayıcı yöntemler kullanılarak yapılandırmak olmayan varsayılan görünürlük ve sütun türlerine kullanılabilir.

Faydalar:

  • IDE, metot otomatik tamamlama yoluyla ızgaraların (ve formların) tanımlanmasına yardımcı oldu
  • Hassas varsayılanlar
  • Uygulama agnostik
  • Basit varlıklar için sadece çok az kod yazılması gerekir
  • XML yaklaşımı ile karşılaştırıldığında, hiçbir özellik kaybı yok
  • Durdurucularla genişletilebilirlik
  • Sınıf arayüzleri yapılırsa, ızgaraları ve formları tanımlamak XML kadar açıklayıcı olabilir (ama çok daha basit)
  • Servis sözleşmesi dersleri için Magento 2s'nin "düşünme tarzı" ile eşleşir
  • Ön kod ile mevcut etkileşimde herhangi bir değişiklik yapılması gerekmez (tel üzerinden aynı trafik)
  • Ön uç sütun sıralama ve yapılandırma şimdi olduğu gibi çalışmaya devam edebilir
  • MOAR XML YOK

Asıl soruya gelince, eski Magento 1 stilini kullanarak adminhtml oluşturmak için bloklar yapmanın doğru olanı araştıracağını düşünmüyorum.
Yalnızca yeni XML tabanlı ızgara bildiriminin mümkün olan en iyi şekilde değiştirilmesi gerektiğini savunuyorum.


? UI component.Are anlamak zor sen magento UI grid bileşeni i geleceği hakkında başka çözüm ile gelecektir düşündüm doğru olduğunu .Bu bana kafa Cache ....... Donot herhangi uygun blog (bulmak hale gelir:
— Amit Bera
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.