ম্যাজেন্টো 2: কেন কোনও ইউআই তালিকাবদ্ধ সংস্থার দুটি সংগ্রহের প্রয়োজন?


16

ম্যাজেন্টো 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 । বৃহত্তর বৃহত্তর প্রশ্নটি সম্ভবত এমন হয় যে কোনও ইউআই তালিকাবদ্ধকরণ গ্রিড তৈরি করতে পিএইচপি অবজেক্টগুলি কী তৈরি করা হয়েছিল এবং কীভাবে একটি কনফিগারেশন তাদের নিয়ন্ত্রণ করে?

উত্তর:


10

আপনার প্রথম প্রশ্নের দ্রুত উত্তর এখানে দেওয়া হল:

ভার্চুয়াল ধরণের জন্য কনফিগারেশন প্রয়োজন হয় না। আপনি যদি সন্ধান করেন তবে Magento\Framework\View\Element\UiComponent\DataProvider\DataProviderদেখতে পাবেন যে এই দুটি আর্গুমেন্টের কোনওটিই ব্যবহার করা হয়নি ("সংগ্রহ" পাশাপাশি "ফিল্টারপুল")।

আমরা যত তাড়াতাড়ি পারি এই অব্যবহৃত কনফিগারেশনটি সরিয়ে ফেলব। সুতরাং, ডেটা সরবরাহকারীদের ভার্চুয়াল প্রকারের ফলাফল ঘোষণাটি এর মতো সহজ হওয়া উচিত:

সিএমএস পৃষ্ঠাগুলির জন্য:

<virtualType name="PageGridDataProvider" type="Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider"/>

এবং সিএমএস ব্লকগুলির জন্য

<virtualType name="PageGridDataProvider" type="Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider"/>

এবং এখনই আপনি দেখতে পাচ্ছেন, ইউআই উপাদানগুলির কনফিগারেশন ফাইলগুলিতে আপনি ডেটা সরবরাহকারী ভার্চুয়াল টাইপ ব্যবহারের জন্য বাধ্য হন না এবং আপনি জেনেরিক ডেটা সরবরাহকারীকে উল্লেখ করতে পারেন Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider। আমরা কেবল বিকাশকারীদের জন্য আরও একটি এক্সটেনশন পয়েন্ট সরবরাহ করার জন্য ভার্চুয়াল প্রকারটি ব্যবহার করার সিদ্ধান্ত নিয়েছি।


জেনে ভালো লাগল. এছাড়াও এটি একটি গ্রিড সংগ্রহ তৈরি করার প্রয়োজন নেই যেহেতু এটি ভার্চুয়াল টাইপ হিসাবে ঘোষণা করা যেতে পারে (আমি প্রথমে এটি কোথায় দেখলাম তা আমি নিশ্চিত নই, আমি মনে করি ম্যাজেন্টো 2 কোথাও শাখা বিকাশ করব কোথাও) github.com/davidverholen/magento2-teaser /blob/1.0/etc/…
ডেভিড ভারহোলেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.