마 젠토 2에는 새로운 " uiComponent
"기능이 있습니다. 이를 통해 <uiComponent/>
레이아웃 핸들 XML 파일에 간단한 태그 를 포함시켜 그리드 및 양식과 같은 것을 애플리케이션 페이지에 추가 할 수 있습니다.
이 표시 데이터 그리드 (a 대한 구성 해당 listing
)가 필요 두 컬렉션 오브젝트가 구성 될 수있다.
아래 각 구성 모음의 역할은 무엇입니까? 아니면이 컬렉션의 역할을 이해하지 못합니까? 아니면 단일 컬렉션 만 사용하여 그리드 객체를 생성하는 방법이 있습니까?
다음 구성은 UI라는 이름의 UI 구성 요소를 설정합니다. cms_page_listing
vendor/magento/module-cms/view/adminhtml/ui_component/cms_page_listing.xml
그리고 다음 DI 인젝션은 마 젠토 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 Grid를 만드는 데 어떤 역할을 하는가dataProvider
입니다. 더 큰 문제는 아마도 UI Listing Grid를 생성하기 위해 어떤 PHP 객체가 생성되고, 어떻게 구성이 객체를 제어 하는가입니다.