No Magento 2.1, existem 25 provedores de dados de grade / lista de componentes de interface do usuário configurados e em uso. Suas classes e ui_component
arquivos do provedor de dados estão listados abaixo
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
Com base nessas informações, parece haver duas classes básicas que os programadores de usuários finais podem usar para basear seus componentes de grade em
- Magento \ Framework \ Visualizar \ Elemento \ UiComponent \ DataProvider \ DataProvider
- Magento \ Ui \ DataProvider \ AbstractDataProvider
A Magento\Ui\DataProvider\AbstractDataProvider
classe parece ser a mais simples das duas, e (parece?) Requer apenas a configuração de um modelo de recursos Magento. O Magento\Customer\Ui\Component\DataProvider
módulo de grade do cliente é baseado nessa classe e parece ter todas as funcionalidades de classificação, filtragem etc. necessárias para uma listagem de grade.
Existe uma razão para a existência Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider
- ou são apenas códigos mais antigos / mais recentes que adotam uma abordagem diferente para criar um provedor de dados? Em outras palavras, o uso de Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider
traz recursos extras para a tabela ou permite que outras partes do sistema façam coisas com a grade? Olhando para o código-fonte, isso Magento\Framework\App\RequestInterface
parece intrigante - como implica que você pode estar relatando a funcionalidade "de graça" com essas grades. No entanto, sem um extenso safari de código, não tenho certeza se isso é verdade ou não, e espero que alguém tenha uma explicação clara sobre por que você usaria uma classe sobre a outra.
fonte
Respostas:
Para mim, a principal diferença é que ele
Magento/Framework/View/Element/UiComponent/DataProvider/DataProvider
usa a API de pesquisa.As seguintes classes são usadas nesta 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
Que são usados para filtragem / pedido / paginação:
E também, obviamente, para a pesquisa:
O que é interessante se isso
Magento/Ui/DataProvider/AbstractDataProvider
menciona a API de pesquisa, mas não a utiliza de maneira alguma:Agora, se você verificar o histórico desses arquivos no GitHub, veja o que você obtém:
Como você pode ver, a maioria das confirmações desses dois arquivos está vinculada ao seguinte ticket interno:
MAGETWO-39905: UI components compatibility with Search API
Mesmo que tenha sido feito para o
Magento/Framework
arquivo, nunca foi feito para oMagento/Ui
arquivo.Além disso, não vejo diferença entre esses arquivos. Um está trabalhando diretamente na coleção, o outro está usando a API de pesquisa para gerar os resultados.
fonte