Dans Magento 2.1, il y a au total 25 fournisseurs de listes / composants de données d'interface utilisateur configurés et utilisés. Leurs classes et ui_component
fichiers de fournisseur de données sont répertoriés ci-dessous
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
Sur la base de ces informations, il semble qu'il existe deux classes de base que les programmeurs utilisateurs finaux peuvent utiliser pour baser leurs composants de grille sur
- Magento \ Framework \ View \ Element \ UiComponent \ DataProvider \ DataProvider
- Magento \ Ui \ DataProvider \ AbstractDataProvider
La Magento\Ui\DataProvider\AbstractDataProvider
classe semble plus simple des deux, et (semble-t-il?) Ne nécessite que la configuration d'un modèle de ressource Magento. Le Magento\Customer\Ui\Component\DataProvider
module de grille client est basé sur cette classe et semble avoir toutes les fonctionnalités de tri, de filtrage, etc. nécessaires pour une liste de grille.
Y a-t-il une raison à cela Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider
- ou s'agit-il simplement d'un code plus ancien / plus récent qui adopte une approche différente pour créer un fournisseur de données? En d'autres termes, l'utilisation du Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider
apporte-t-elle des fonctionnalités supplémentaires à la table ou permet-elle à d' autres parties du système de faire des choses avec la grille? En regardant le code source, cela Magento\Framework\App\RequestInterface
semble intrigant - car cela implique que vous pourriez signaler des fonctionnalités "gratuitement" avec ces grilles. Cependant, sans un safari de code approfondi, je ne sais pas si c'est vrai ou non, et j'espère que quelqu'un a une explication claire de la raison pour laquelle vous utiliseriez une classe par rapport à l'autre.
la source
Réponses:
Pour moi, cette principale différence est que le
Magento/Framework/View/Element/UiComponent/DataProvider/DataProvider
utilise l'API de recherche.Les classes suivantes sont utilisées dans cette classe:
Magento\Framework\Api\FilterBuilder
Magento\Framework\Api\Search\ReportingInterface
Magento\Framework\Api\Search\SearchCriteria
Magento\Framework\Api\Search\SearchCriteriaBuilder
Magento\Framework\Api\Search\SearchResultInterface
Qui sont utilisés pour filtrer / ordonner / paginer:
Et aussi évidemment pour la recherche:
Ce qui est intéressant si cela
Magento/Ui/DataProvider/AbstractDataProvider
mentionne l'API de recherche mais ne l'utilisez pas du tout:Maintenant, si vous vérifiez l'historique de ces fichiers dans GitHub, voici ce que vous obtenez:
Comme vous pouvez le voir, la plupart des validations pour ces deux fichiers sont liées au ticket interne suivant:
MAGETWO-39905: UI components compatibility with Search API
Même si cela a été fait pour le
Magento/Framework
fichier, cela n'a jamais été fait pour leMagento/Ui
fichier.En dehors de cela, je ne vois aucune différence entre ces fichiers. L'un travaille directement sur la collection, l'autre utilise l'API de recherche pour générer les résultats.
la source