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.