Magento 2'nin yeni bir " uiComponent
" özelliği var. Bu, <uiComponent/>
uygulama sayfanıza Izgaralar ve formlar gibi şeyler eklemek için mizanpaj tanıtıcı XML dosyalarınıza basit bir etiket eklemenizi sağlar.
Görünen bir veri şebekesine (a yapılandırma olduğunu listing
) gerektirir iki toplama nesneleri yapılandırılabilir.
Aşağıdaki her yapılandırma koleksiyonunun rolü nedir? Yoksa bu koleksiyonların rollerini yanlış mı anlıyorum? Yoksa tek bir koleksiyon kullanarak ızgara nesnesi oluşturmanın bir yolu var mı?
Aşağıdaki yapılandırma, bir UI listeleme Bileşeni oluşturur cms_page_listing
vendor/magento/module-cms/view/adminhtml/ui_component/cms_page_listing.xml
Ve aşağıdaki DI Enjeksiyonu Magento'ya a'nın cms_page_listing
bir Magento\Cms\Model\ResourceModel\Page\Grid\Collection
koleksiyon kullanması gerektiğini söyler .
<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>
Bu, ızgarayı doldurmak için kullanılan ana koleksiyon gibi görünüyor.
Bununla birlikte , yapılandırmada da bu PageGridDataProvider
vardır 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
Bir virtualType için giderir
<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>
Bu sanal tür ikinci bir koleksiyonu ( Magento\Cms\Model\ResourceModel\Page\Collection
) yapılandırır .
Bu ikinci yapılandırmanın neden gerekli olduğu veya bir ızgara oluşturmadaki rolünün ne olduğu açık değildir. Daha yüksek seviye soru, muhtemelen bir UI Izgarası oluşturmada hangi rolün oynadığıdırdataProvider
. Daha büyük olan soru muhtemelen bir UI Listeleme Izgarası oluşturmak için hangi PHP nesnelerinin oluşturulduğu ve bir yapılandırmanın bunları nasıl kontrol ettiği