Magento 2 में एक नया " uiComponent
" फीचर है। यह आपको <uiComponent/>
अपने लेआउट पृष्ठ पर ग्रिड और फॉर्म जैसी चीजों को जोड़ने के लिए अपने लेआउट हैंडल में एक सरल टैग को शामिल करने की अनुमति देता है ।
ऐसा प्रतीत होता है कि डेटा ग्रिड (ए listing
) के लिए कॉन्फ़िगरेशन के लिए दो संग्रह वस्तुओं को कॉन्फ़िगर करने की आवश्यकता होती है।
नीचे प्रत्येक कॉन्फ़िगरेशन संग्रह की भूमिका क्या है? या मैं इन संग्रहों की भूमिकाओं को गलत समझता हूं? या केवल एक ही संग्रह का उपयोग करके ग्रिड ऑब्जेक्ट बनाने का एक तरीका है?
निम्न कॉन्फ़िगरेशन एक UI लिस्टिंग घटक सेट करता है जिसका नाम है cms_page_listing
vendor/magento/module-cms/view/adminhtml/ui_component/cms_page_listing.xml
और निम्नलिखित DI इंजेक्शन Magento से कहता है कि 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
)।
यह स्पष्ट नहीं है कि इस दूसरे कॉन्फ़िगरेशन की आवश्यकता क्यों है, या ग्रिड बनाने में इसकी भूमिका क्या है। उच्च स्तर का प्रश्न संभवतः UI ग्रिड बनाने में क्या भूमिका निभाता हैdataProvider
। बड़ा बड़ा सवाल शायद यह है कि एक यूआई लिस्टिंग ग्रिड बनाने के लिए PHP ऑब्जेक्ट क्या बनाए जाते हैं, और एक कॉन्फ़िगरेशन उन्हें कैसे नियंत्रित करता है