Magento 2 có uiComponent
tính năng "" mới. Điều này cho phép bạn bao gồm một <uiComponent/>
thẻ đơn giản trong bố cục của bạn xử lý các tệp XML để thêm những thứ như Lưới và biểu mẫu vào trang ứng dụng của bạn.
Dường như cấu hình cho lưới dữ liệu (a listing
) yêu cầu hai đối tượng thu thập được cấu hình.
Vai trò của mỗi bộ sưu tập cấu hình dưới đây là gì? Hay tôi hiểu sai vai trò của những bộ sưu tập này? Hoặc có cách nào để tạo đối tượng lưới chỉ bằng một bộ sưu tập không?
Cấu hình sau đây thiết lập Thành phần danh sách UI có tên cms_page_listing
vendor/magento/module-cms/view/adminhtml/ui_component/cms_page_listing.xml
Và DI tiêm sau đây nói với Magento rằng cms_page_listing
nên sử dụng một Magento\Cms\Model\ResourceModel\Page\Grid\Collection
bộ sưu tập.
<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>
Đây dường như là bộ sưu tập chính được sử dụng để điền vào lưới điện.
Tuy nhiên , cũng có cái này PageGridDataProvider
trong cms_page_listing
cấu hình.
<!-- 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>
Việc phân PageGridDataProvider
giải thành một 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>
Kiểu ảo này cấu hình bộ sưu tập thứ hai ( Magento\Cms\Model\ResourceModel\Page\Collection
).
Không rõ tại sao cấu hình thứ hai này là cần thiết, hoặc vai trò của nó là gì trong việc tạo lưới. Câu hỏi mức độ cao hơn có lẽ là vai trò gì hiện các dataProvider
vở kịch trong việc tạo ra một giao diện người dùng Lưới . Câu hỏi lớn hơn có lẽ là các đối tượng PHP nào được tạo để tạo Lưới danh sách giao diện người dùng và cách cấu hình kiểm soát chúng