ম্যাজেন্টো 2: দুটি গ্রিড উপাদান তথ্য সরবরাহকারীদের মধ্যে পার্থক্য কী?


16

ম্যাজেন্টো ২.১-তে, মোট 25 টি ইউআই উপাদান তালিকা / গ্রিড ডেটা সরবরাহকারী কনফিগার করা হয়েছে এবং ব্যবহৃত হচ্ছে। তাদের ডেটা সরবরাহকারীর ক্লাস এবং ui_componentফাইলগুলি নীচে তালিকাভুক্ত রয়েছে

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

এই তথ্যের ভিত্তিতে, এমন দুটি বেস ক্লাস উপস্থিত রয়েছে যা ব্যবহারকারী প্রোগ্রামাররা তাদের গ্রিড উপাদানগুলি ভিত্তিতে ব্যবহার করতে পারে

  • Magento \ ফ্রেমওয়ার্ক \ দেখুন \ উপাদান \ UiComponent \ dataProvider \ dataProvider
  • Magento \ UI 'তে \ dataProvider \ AbstractDataProvider

Magento\Ui\DataProvider\AbstractDataProviderবর্গ দুই সহজ বলে মনে হয়, এবং (বলে মনে হয়?) শুধুমাত্র একটি Magento রিসোর্স মডেল কনফিগারেশন প্রয়োজন। গ্রাহক গ্রিড Magento\Customer\Ui\Component\DataProviderমডিউলটি এই শ্রেণীর উপর ভিত্তি করে তৈরি হয় এবং গ্রিড তালিকার জন্য সমস্ত বাছাই, ফিল্টারিং ইত্যাদি কার্যকারিতা উপস্থিত রয়েছে বলে মনে হয়।

Magento\Framework\View\Element\UiComponent\DataProvider\DataProviderঅস্তিত্বের কোনও কারণ আছে কি - বা এটি কেবল পুরানো / নতুন কোড যা কোনও ডেটা সরবরাহকারী তৈরি করার ক্ষেত্রে ভিন্ন দৃষ্টিভঙ্গি গ্রহণ করে? অন্য কথায়, ব্যবহারটি Magento\Framework\View\Element\UiComponent\DataProvider\DataProviderকী টেবিলটিতে কোনও অতিরিক্ত বৈশিষ্ট্য নিয়ে আসে বা সিস্টেমের অন্যান্য অংশগুলিকে গ্রিডের সাহায্যে জিনিসগুলি সক্ষম করে ? উত্স কোডটির দিকে তাকিয়ে দেখে Magento\Framework\App\RequestInterfaceমনে হয় আকর্ষণীয় - যেমন বোঝা যাচ্ছে আপনি এই গ্রিডগুলির সাথে "নিখরচায়" কার্যকারিতাটির প্রতিবেদন করছেন। তবে কোনও বিস্তৃত কোড সাফারি ছাড়া আমি নিশ্চিত না যে এটি সত্য কিনা না এবং আমি আশা করছি যে কারওর কাছে আপনি কেন অন্য শ্রেণীর উপর থেকে একটি শ্রেণি ব্যবহার করবেন তার স্পষ্ট ব্যাখ্যা রয়েছে।


যাইহোক ভাল প্রশ্ন, এটি অ্যাডমিনে আমার কাস্টম মডিউলের জন্য রফতানির সাথে সমস্যা সমাধান করতে সহায়তা করেছে। আমি ভুলভাবে ডেটাপ্রোভাইডার টাইপ "ম্যাজেন্টো \ ইউআই \ ডেটাপ্রোভাইডার \ অ্যাবস্ট্র্যাক্ট ডেটাপ্রোভিডার" ব্যবহার করেছি।
সঞ্জয় চৌধুরী চৌধুরী

উত্তর:


14

আমার কাছে, প্রধান পার্থক্যটি হ'ল Magento/Framework/View/Element/UiComponent/DataProvider/DataProviderঅনুসন্ধানগুলি API ব্যবহার করে।

নিম্নলিখিত শ্রেণিগুলি এই শ্রেণিতে ব্যবহৃত হয়:

  • Magento\Framework\Api\FilterBuilder
  • Magento\Framework\Api\Search\ReportingInterface
  • Magento\Framework\Api\Search\SearchCriteria
  • Magento\Framework\Api\Search\SearchCriteriaBuilder
  • Magento\Framework\Api\Search\SearchResultInterface

যা ফিল্টারিং / অর্ডার / পেজিংয়ের জন্য ব্যবহৃত হয়:

public function addFilter(\Magento\Framework\Api\Filter $filter)
{
    $this->searchCriteriaBuilder->addFilter($filter);
}

public function addOrder($field, $direction)
{
    $this->searchCriteriaBuilder->addSortOrder($field, $direction);
}

public function setLimit($offset, $size)
{
    $this->searchCriteriaBuilder->setPageSize($size);
    $this->searchCriteriaBuilder->setCurrentPage($offset);
}

এবং স্পষ্টতই অনুসন্ধানের জন্য:

public function getData()
{
    return $this->searchResultToOutput($this->getSearchResult());
}

protected function searchResultToOutput(SearchResultInterface $searchResult)
{
    $arrItems = [];

    $arrItems['items'] = [];
    foreach ($searchResult->getItems() as $item) {
        $itemData = [];
        foreach ($item->getCustomAttributes() as $attribute) {
            $itemData[$attribute->getAttributeCode()] = $attribute->getValue();
        }
        $arrItems['items'][] = $itemData;
    }

    $arrItems['totalRecords'] = $searchResult->getTotalCount();

    return $arrItems;
}

public function getSearchResult()
{
    return $this->reporting->search($this->getSearchCriteria());
}

আকর্ষণীয় কী তা যদি Magento/Ui/DataProvider/AbstractDataProviderঅনুসন্ধানের API এর উল্লেখ থাকে তবে এটি একেবারেই ব্যবহার না করে:

public function getSearchCriteria()
{
    //TODO: Technical dept, should be implemented as part of SearchAPI support for Catalog Grids
    return null;
}

public function getSearchResult()
{
    //TODO: Technical dept, should be implemented as part of SearchAPI support for Catalog Grids
    return $this->getCollection();
}

এখন আপনি যদি গিটহাবে এই ফাইলগুলির ইতিহাস পরীক্ষা করেন তবে আপনি যা পাবেন তা এখানে:

আপনি দেখতে পাচ্ছেন যে দুটি ফাইলের জন্য বেশিরভাগ কমিটগুলি নিম্নলিখিত অভ্যন্তরীণ টিকিটের সাথে যুক্ত রয়েছে: MAGETWO-39905: UI components compatibility with Search API

এমনকি এটি এর জন্য করা হয়েছে Magento/Framework ফাইলের থাকে তবে এটি কখনও ফাইলের করা হয়নি Magento/Ui

তা ছাড়া আমি এই ফাইলগুলির মধ্যে কোনও পার্থক্য দেখছি না। একজন সংগ্রহের জন্য সরাসরি কাজ করছেন, অন্যজন ফলাফল উত্পন্ন করতে অনুসন্ধান API ব্যবহার করছেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.