In Magento 2.1 sind insgesamt 25 Anbieter für die Auflistung von UI-Komponenten / Grid-Daten konfiguriert und in Verwendung. Ihre Datenprovider-Klassen und ui_component
-Dateien sind unten aufgeführt
Magento\Bundle\Ui\DataProvider\Product\BundleDataProvider bundle_product_listing.xmlMagento\Catalog\Ui\DataProvider\Product\Attributes\Listing product_attributes_grid.xml
Magento\Catalog\Ui\DataProvider\Product\ProductCustomOptionsDataProvider product_custom_options_listing.xml
Magento\Catalog\Ui\DataProvider\Product\ProductDataProvider configurable_associated_product_listing.xml
Magento\Catalog\Ui\DataProvider\Product\ProductDataProvider product_listing.xml
Magento\Catalog\Ui\DataProvider\Product\Related\CrossSellDataProvider crosssell_product_listing.xml
Magento\Catalog\Ui\DataProvider\Product\Related\RelatedDataProvider related_product_listing.xml
Magento\Catalog\Ui\DataProvider\Product\Related\UpSellDataProvider upsell_product_listing.xml
Magento\Cms\Ui\Component\DataProvider cms_block_listing.xml
Magento\Cms\Ui\Component\DataProvider cms_page_listing.xml
Magento\ConfigurableProduct\Ui\DataProvider\Attributes product_attributes_listing.xml
Magento\Customer\Ui\Component\DataProvider customer_listing.xml
Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider customer_online_grid.xml
Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider sales_order_creditmemo_grid.xml
Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider sales_order_grid.xml
Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider sales_order_invoice_grid.xml
Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider sales_order_shipment_grid.xml
Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider sales_order_view_creditmemo_grid.xml
Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider sales_order_view_invoice_grid.xml
Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider sales_order_view_shipment_grid.xml
Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider search_synonyms_grid.xml
BraintreeTransactionsDataProvider (virtual type) braintree_report.xml
Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider
Magento\GroupedProduct\Ui\DataProvider\Product\GroupedProductDataProvider grouped_product_listing.xml
Magento\Review\Ui\DataProvider\Product\ReviewDataProvider review_listing.xml
Magento\Theme\Ui\Component\Design\Config\DataProvider design_config_listing.xml
Basierend auf diesen Informationen scheint es zwei Basisklassen zu geben, auf denen Endbenutzerprogrammierer ihre Grid-Komponenten aufbauen können
- Magento \ Framework \ View \ Element \ UiComponent \ DataProvider \ DataProvider
- Magento \ Ui \ DataProvider \ AbstractDataProvider
Die Magento\Ui\DataProvider\AbstractDataProvider
Klasse scheint einfacher zu sein und erfordert (anscheinend?) Nur die Konfiguration eines Magento-Ressourcenmodells. Das Kundenraster- Magento\Customer\Ui\Component\DataProvider
Modul basiert auf dieser Klasse und verfügt anscheinend über alle Funktionen zum Sortieren, Filtern usw., die für eine Rasterauflistung erforderlich sind.
Gibt es einen Grund für die Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider
Existenz - oder ist es nur älterer / neuer Code, der einen anderen Ansatz zur Erstellung eines Datenproviders verfolgt? Mit anderen Worten, bringt die Verwendung von "the" Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider
zusätzliche Funktionen in die Tabelle oder ermöglicht es anderen Teilen des Systems, Dinge mit dem Raster zu tun? Betrachtet man den Quellcode, Magento\Framework\App\RequestInterface
erscheint das faszinierend - da dies impliziert, dass Sie mit diesen Gittern möglicherweise "kostenlos" über Funktionen berichten. Ohne eine umfangreiche Codesafari bin ich mir jedoch nicht sicher, ob das stimmt oder nicht, und ich hoffe, dass jemand eine klare Erklärung dafür hat, warum Sie eine Klasse über die andere setzen würden.
quelle
Antworten:
Für mich besteht der Hauptunterschied darin, dass
Magento/Framework/View/Element/UiComponent/DataProvider/DataProvider
die Such-API verwendet wird.Die folgenden Klassen werden in dieser Klasse verwendet:
Magento\Framework\Api\FilterBuilder
Magento\Framework\Api\Search\ReportingInterface
Magento\Framework\Api\Search\SearchCriteria
Magento\Framework\Api\Search\SearchCriteriaBuilder
Magento\Framework\Api\Search\SearchResultInterface
Welche werden zum Filtern / Bestellen / Paging verwendet:
Und natürlich auch für die Suche:
Was ist interessant, wenn
Magento/Ui/DataProvider/AbstractDataProvider
die Such-API erwähnt, aber überhaupt nicht verwendet wird:Wenn Sie nun den Verlauf dieser Dateien in GitHub überprüfen, erhalten Sie Folgendes:
Wie Sie sehen, sind die meisten Commits für diese beiden Dateien mit dem folgenden internen Ticket verknüpft:
MAGETWO-39905: UI components compatibility with Search API
Auch wenn es für die
Magento/Framework
Datei gemacht wurde, wurde es nie für dieMagento/Ui
Datei gemacht.Ansonsten sehe ich keinen Unterschied zwischen diesen Dateien. Einer arbeitet direkt an der Sammlung, der andere verwendet die Such-API, um die Ergebnisse zu generieren.
quelle