Magento 2には新しい " uiComponent
"機能があります。これにより<uiComponent/>
、レイアウトハンドルXMLファイルに簡単なタグを含めて、グリッドやフォームなどをアプリケーションページに追加できます。
表示されるデータグリッド(A用の設定があることlisting
)が必要2つのコレクション・オブジェクトを構成します。
以下の各構成コレクションの役割は何ですか?または、これらのコレクションの役割を誤解していますか?または、単一のコレクションのみを使用してグリッドオブジェクトを作成する方法はありますか?
次の構成は、名前付きコンポーネントをリストする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
コレクションを使用する必要があることをMagentoに伝えます。
<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>
この仮想タイプは、2番目のコレクション(Magento\Cms\Model\ResourceModel\Page\Collection
)を構成します。
この2番目の構成が必要な理由や、グリッドの作成におけるその役割は明確ではありません。上位レベルの質問は、おそらくUIグリッドの作成においてどのような役割を果たすかdataProvider
です。より大きな大きな質問は、おそらくUIリストグリッドを作成するために作成されたPHPオブジェクトと、それらを制御する構成です。