ম্যাজেন্টো 2 এর একটি নতুন uiComponentবৈশিষ্ট্য রয়েছে। এটি <uiComponent/>আপনাকে আপনার অ্যাপ্লিকেশন পৃষ্ঠায় গ্রিড এবং ফর্মের মতো জিনিস যুক্ত করতে আপনার লেআউট হ্যান্ডেল এক্সএমএল ফাইলগুলিতে একটি সহজ ট্যাগ অন্তর্ভুক্ত করতে দেয় ।
এটি উপস্থিত হয় যে কোনও ডেটা গ্রিডের জন্য কনফিগারেশনের জন্য (ক listing) দুটি সংগ্রহের সামগ্রী কনফিগার করা দরকার।
নীচে প্রতিটি কনফিগারেশন সংগ্রহের ভূমিকা কী? বা আমি এই সংগ্রহগুলির ভূমিকা ভুল বুঝি? বা কেবল একটি একক সংগ্রহ ব্যবহার করে গ্রিড অবজেক্ট তৈরি করার কোনও উপায় আছে?
নিম্নলিখিত কনফিগারেশন নামের একটি UI তালিকা উপাদান সেট আপ করে cms_page_listing
vendor/magento/module-cms/view/adminhtml/ui_component/cms_page_listing.xml
এবং নিম্নলিখিত ডিআই ইঞ্জেকশনটি ম্যাজেন্টোকে বলে যে cms_page_listingএকটি Magento\Cms\Model\ResourceModel\Page\Grid\Collectionসংগ্রহ ব্যবহার করা উচিত ।
<type name="Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory">
<arguments>
<argument name="collections" xsi:type="array">
<item name="cms_page_listing_data_source" xsi:type="string">Magento\Cms\Model\ResourceModel\Page\Grid\Collection</item>
</argument>
</arguments>
</type>
এটি গ্রিডকে জনপ্রিয় করার জন্য ব্যবহৃত প্রধান সংগ্রহ বলে মনে হচ্ছে।
তবে সেখানে যদি এই PageGridDataProviderমধ্যে cms_page_listingকনফিগারেশন।
<!-- File: vendor/magento/module-cms/view/adminhtml/ui_component/cms_page_listing.xml -->
<argument name="dataProvider" xsi:type="configurableObject">
<argument name="class" xsi:type="string">PageGridDataProvider</argument>
<argument name="name" xsi:type="string">cms_page_listing_data_source</argument>
<argument name="primaryFieldName" xsi:type="string">page_id</argument>
<argument name="requestFieldName" xsi:type="string">id</argument>
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="update_url" xsi:type="url" path="mui/index/render"/>
</item>
</argument>
</argument>
PageGridDataProviderএকটি virtualType করার সমাধান করা
<virtualType name="PageGridDataProvider" type="Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider">
<arguments>
<argument name="collection" xsi:type="object" shared="false">Magento\Cms\Model\ResourceModel\Page\Collection</argument>
<argument name="filterPool" xsi:type="object" shared="false">CmsGirdFilterPool</argument>
</arguments>
</virtualType>
এই ভার্চুয়াল ধরণটি দ্বিতীয় সংগ্রহ ( Magento\Cms\Model\ResourceModel\Page\Collection) কনফিগার করে ।
এই দ্বিতীয় কনফিগারেশনটির প্রয়োজন কেন, বা গ্রিড তৈরিতে এর ভূমিকা কী তা স্পষ্ট নয়। উচ্চ স্তরের প্রশ্নটি সম্ভবত কোনও ইউআই গ্রিড তৈরিতে কী ভূমিকা পালন করেdataProvider । বৃহত্তর বৃহত্তর প্রশ্নটি সম্ভবত এমন হয় যে কোনও ইউআই তালিকাবদ্ধকরণ গ্রিড তৈরি করতে পিএইচপি অবজেক্টগুলি কী তৈরি করা হয়েছিল এবং কীভাবে একটি কনফিগারেশন তাদের নিয়ন্ত্রণ করে?