[EDIT 3 अक्टूबर 2018]
Devdocs के लिंक के लिए अपडेट करें: 2.0 - https://devdocs.magento.com/guides/v2.0/ui-compenders/ui-listing-grid.html और https://devdocs.magento.com/guides/v2। 0 / ui-घटकों / ui-secondary.html
२.१ - https://devdocs.magento.com/guides/v2.1/ui_comp_guide/compenders/ui-listing-grid.html
२.२ - https://devdocs.magento.com/guides/v2.2/ui_comp_guide/compenders/ui-listing-grid.html
[EDIT 21 जनवरी 2016]
20/01/2017 तक यूआई घटकों के विस्तारित प्रलेखन के साथ magento2 देवदास को अद्यतन किया गया है। मैंने इसे बड़े पैमाने पर चेक नहीं किया है, लेकिन उनमें कुछ दिन पहले दी गई प्रतिक्रिया की तुलना में अधिक जानकारी हो सकती है, इसलिए अपने समय के हित में आप http://devdocs.magento.com/guides/v2.0/ui देखना चाहते हैं -library / ui-पुस्तकालय-secondary.html
[/ संपादित करें]
मैं अब एक महीने से अधिक समय से Magento2 के साथ काम कर रहा हूं और यही मैंने ग्रिड बनाने के नए तरीके के बारे में देखा है।
Magento 2 UI ग्रिड घटक
1) लेआउट फ़ाइल के अंदर Company/Module/view/adminhtml/layout/module_controller_action.xml
परिभाषित ग्रिड के रूप में uiComponent के साथ:
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<update handle="styles"/>
<body>
<referenceContainer name="content">
<uiComponent name="listing_name"/>
</referenceContainer>
</body>
</page>
2) uiComponent को Company/Module/view/adminhtml/ui_component/listing_name.xml
फाइल में परिभाषित किया गया है। फ़ाइल नाम लेआउट फ़ाइल में उपयोग किए गए uiComponent नाम के समान होना चाहिए। पहली नज़र में फ़ाइल की संरचना बहुत जटिल लग सकती है लेकिन हमेशा की तरह ये कुछ दोहराए जाने वाले नोड हैं। इसे सरल बनाने के लिए इसे स्लाइस करें। घटक फ़ाइल का मुख्य नोड है <listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
। यह तय हो गया है और मेरा मानना है कि इसके लिए नाम स्थान स्थान विशेषता की आवश्यकता है। अगला वहाँ आम तौर पर अंदर 4 नोड्स हैं <listing />
नोड: <argument />
, <dataSource />
, <container />
और <columns />
। यह हालांकि एक सख्त सेटअप नहीं है क्योंकि <argument />
नोड को अधिक कॉन्फ़िगरेशन प्रदान करने के लिए डुप्लिकेट किया जा सकता है या <container />
किसी कारण से "चिपचिपा" कंटेनर जोड़ने वाले सेमी पेज लिस्टिंग में हो सकता है ।
पहला नोड है <argument />
। यह नोड घटक के लिए डेटा को परिभाषित करता है। आमतौर पर आपको ऐसा कुछ प्रदान करने की आवश्यकता होती है:
<argument name="data" xsi:type="array">
<item name="js_config" xsi:type="array">
<item name="provider" xsi:type="string">listing_name.listing_name_data_source</item>
<item name="deps" xsi:type="string">listing_name.listing_name_data_source</item>
</item>
<item name="spinner" xsi:type="string">listing_columns</item>
<item name="buttons" xsi:type="array">
<item name="add" xsi:type="array">
<item name="name" xsi:type="string">add</item>
<item name="label" xsi:type="string" translate="true">Add New Item</item>
<item name="class" xsi:type="string">primary</item>
<item name="url" xsi:type="string">*/*/new</item>
</item>
</item>
</argument>
<argument />
नोड को विशेषता की आवश्यकता होती है name
। इस मामले data
में घटक के बारे में बुनियादी जानकारी को परिभाषित करता है। इसमें <item />
कॉन्फ़िगरेशन के प्रत्येक विशिष्ट भाग के लिए कई नोड होते हैं । js_config
उस घटक को बताता है जहां लिस्टिंग xml कॉन्फ़िगरेशन में डेटा और निर्भरता के प्रदाता हैं (जो मुझे लगता है कि जावास्क्रिप्ट हैश में परिवर्तित हो गया है)। provider
मूल्य में लेआउट फ़ाइल और विशिष्ट डेटा स्रोत नाम का उपयोग करने वाले सूचीबद्ध नाम शामिल हैं जिन्हें बाद में उपयोग किया जाएगा। उन सूचियों में मैंने Magento में जाँच की provider
और deps
वही हैं। मुझे यकीन नहीं है कि यह अलग होने का क्या उपयोग है। spinner
उस नोड का नाम लेता है जहाँ ग्रिड के कॉलम परिभाषित किए गए हैं। buttons
ग्रिड के शीर्ष पर बटन जोड़ने की अनुमति देता है। ज्यादातर मामलों में यह सिर्फ Add new
बटन होगा। बटन में कुछ तत्व होते हैं:name
एलिमेंट आईडी के रूप में उपयोग किया जाता label
है, जो बटन कहता class
है, बटन वर्ग है और url
यह उसी बिंदु की लिंक है। तारांकन को वर्तमान url के भाग से बदल दिया जाता है। अन्य संभावित <item />
बटन के लिए नोड्स हैं: id
, title
, type
(, रीसेट सबमिट करें या बटन), onclick
(के बजाय url
, यह पूर्वता है) style
, value
, disabled
। बटन तत्व Magento\Ui\Component\Control\Button
वर्ग द्वारा प्रदान किया जाता है ।
अगला हमारे पास <dataSource />
नोड है:
<dataSource name="listing_name_data_source">
<argument name="dataProvider" xsi:type="configurableObject">
<argument name="class" xsi:type="string">UniqueNameGridDataProvider</argument>
<argument name="name" xsi:type="string">listing_name_data_source</argument>
<argument name="primaryFieldName" xsi:type="string">database_id</argument>
<argument name="requestFieldName" xsi:type="string">request_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>
<argument name="data" xsi:type="array">
<item name="js_config" xsi:type="array">
<item name="component" xsi:type="string">Magento_Ui/js/grid/provider</item>
</item>
</argument>
</dataSource>
name
<dataSource />
नोड में प्रयोग किया जाता है argument/js_config/provider
और में इस्तेमाल एक से मेल खाना चाहिए argument/js_config/deps
। अगला नोड परिभाषित करता है कि ग्रिड के लिए डेटा तैयार करने के लिए कौन सा वर्ग जिम्मेदार है। class
तर्क के लिए अद्वितीय नाम की आवश्यकता होती है जिसे मिलान किया जाएगा di.xml
। primaryFieldName
डेटाबेस प्राथमिक स्तंभ और requestFieldName
HTTP अनुरोधों में चर से संबंधित है । वे बराबर हो सकता है लेकिन जरूरी नहीं है, सीएमएस पेज सूची का उपयोग करता है page_id
के रूप में primaryFieldName
और id
के रूप में requestFieldName
। update_url
प्रवेश बिंदु को संदर्भित करता है जहां फ़िल्टर करने और छँटाई के लिए अजाक्स कॉल भेजे जाते हैं। <dataSource />
जावास्क्रिप्ट फ़ाइल को संदर्भित करने वाला दूसरा तर्क ग्रिड के लिए अजाक्स कॉल भेजने और प्रसंस्करण के हिस्से को संभालता है। डिफ़ॉल्ट फ़ाइल है Magento/Ui/view/base/web/js/grid/provider.js
।
एक और नोड है <container />
।
<container name="listing_top"> ... </container>
जैसा कि इसमें बहुत सारे डेटा हैं, मुझे इसे भी विभाजित करने दें। इसके बच्चे पूरे पृष्ठ के भाग हैं। पहला बच्चा <argument />
:
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="template" xsi:type="string">ui/grid/toolbar</item>
</item>
</argument>
यह लेआउट और सभी कार्यों और डिफ़ॉल्ट बिंदुओं से निपटने के लिए जिम्मेदार नॉकआउट टेम्पलेट को परिभाषित करता है Magento/Ui/view/base/web/templates/grid/toolbar.html
अगला नोड है (या हो सकता है) <bookmark />
<bookmark name="bookmarks">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="storageConfig" xsi:type="array">
<item name="namespace" xsi:type="string">listing_name</item>
</item>
</item>
</argument>
</bookmark>
यह नोड ग्रिड में बुकमार्क सुविधा जोड़ता है। यह व्यवस्थापक को ग्रिड के विभिन्न "प्रोफाइल" सेट करने की अनुमति देता है जो विभिन्न कॉलम प्रदर्शित करता है। इसके लिए धन्यवाद कि आप टेबल से ग्रिड तक सभी कॉलम जोड़ सकते हैं और उपयोगकर्ता को यह तय करने दें कि कौन सी जानकारी उसके लिए प्रासंगिक है। namespace
लेआउट फ़ाइल में प्रयुक्त नाम से मेल खाना चाहिए।
एक और नोड है <component />
<component name="columns_controls">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="columnsData" xsi:type="array">
<item name="provider" xsi:type="string">listing_name.listing_name.listing_columns</item>
</item>
<item name="component" xsi:type="string">Magento_Ui/js/grid/controls/columns</item>
<item name="displayArea" xsi:type="string">dataGridActions</item>
</item>
</argument>
</component>
हमारे पास यहां कॉन्फ़िगर करने के लिए 3 मान हैं। पहला वह है provider
जो पैटर्न का अनुसरण करता है [लिस्टिंग_नाम_फ्रॉम_लेआउट]। component
जेएस फाइल को संदर्भित करता है जो ग्रिड प्रदर्शित करता है और डिफ़ॉल्ट बिंदुओं के लिए Magento/Ui/view/base/web/js/grid/controls/columns.js
जो टेम्पलेट का उपयोग करता है Magento/Ui/view/base/web/templates/grid/controls/columns.html
। अंतिम आइटम वह है displayArea
जो परिभाषित करता है कि स्तंभ नियंत्रण को प्रदर्शित करने की आवश्यकता है। यह (डिफ़ॉल्ट getRegion('dataGridActions')
:) में परिभाषित फ़ाइल को संदर्भित करता है ।container/argument/config/template
Magento/Ui/view/base/web/templates/grid/toolbar.html
अगला नोड है <filterSearch />
<filterSearch name="fulltext">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="provider" xsi:type="string">listing_name.listing_name_data_source</item>
<item name="chipsProvider" xsi:type="string">listing_name.listing_name.listing_top.listing_filters_chips</item>
<item name="storageConfig" xsi:type="array">
<item name="provider" xsi:type="string">listing_name.listing_name.listing_top.bookmarks</item>
<item name="namespace" xsi:type="string">current.search</item>
</item>
</item>
</argument>
</filterSearch>
यह नोड पेज में पूर्ण पाठ खोज जोड़ता है। यह एक प्लेसहोल्डर के रूप में "कीवर्ड द्वारा खोजें" के साथ एकल पाठ इनपुट फ़ील्ड के रूप में ग्रिड के ऊपर स्थित है। मुझे यकीन नहीं है कि यहां कौन से विकल्प संभव हैं क्योंकि मैं इस से ज्यादा नहीं खेल पाया लेकिन लिस्टिंग_फिल्टर्स_चिप्स Magento/Ui/view/base/web/js/grid/filters/chips.js
फाइल को संदर्भित करता है ।
अगला नोड है <filters />
<filters name="listing_filters">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="columnsProvider" xsi:type="string">listing_name.listing_name.listing_columns</item>
<item name="storageConfig" xsi:type="array">
<item name="provider" xsi:type="string">listing_name.listing_name.listing_top.bookmarks</item>
<item name="namespace" xsi:type="string">current.filters</item>
</item>
<item name="templates" xsi:type="array">
<item name="filters" xsi:type="array">
<item name="select" xsi:type="array">
<item name="component" xsi:type="string">Magento_Ui/js/form/element/ui-select</item>
<item name="template" xsi:type="string">ui/grid/filters/elements/ui-select</item>
</item>
</item>
</item>
<item name="childDefaults" xsi:type="array">
<item name="provider" xsi:type="string">listing_name.listing_name.listing_top.listing_filters</item>
<item name="imports" xsi:type="array">
<item name="visible" xsi:type="string">listing_name.listing_name.listing_columns.${ $.index }:visible</item>
</item>
</item>
</item>
<item name="observers" xsi:type="array">
<item name="column" xsi:type="string">column</item>
</item>
</argument>
</filters>
यह नोड स्तंभ फ़िल्टरिंग के लिए कॉन्फ़िगरेशन को परिभाषित करता है जो ग्रिड के ऊपर दाईं ओर "फ़िल्टर" बटन पर क्लिक करने के बाद दिखाई देता है। columnsProvider
पिछले नोड्स के समान संरचना का अनुसरण करता है, इसलिए [लिस्टिंग_नाम_फ्रॉम_ऑलआउट]। [लिस्टिंग_नाम_फ्रॉम-वेलआउट] [लिस्टिंग_ कोलुमन्स_नोड_नाम]। storegeConfig
इस तरह जाता है [लिस्टिंग_नाम_फ्रेम_लेआउट]। [लिस्टिंग_नाम_फ्रॉम_लेआउट] [कंटेनर_नोड_नाम] [बुकमार्क_नोड_नाम]। में templates
आइटम नोड आप परिभाषित कर सकते हैं जो फ़ाइलों को विशिष्ट फ़िल्टर विकल्प प्रस्तुत करने के लिए उपयोग किया जाता है। इस मामले में केवल चुनिंदा परिभाषित किया गया है और यह नॉकआउट टेम्पलेट के Magento/Ui/view/base/web/js/form/element/ui-select.js
रूप में component
और उपयोग करता है Magento/Ui/view/base/web/templates/grid/filters/elements/ui-select.html
। में देखो Magento/Ui/view/base/web/js/form/element
अन्य संभावनाओं को देखने के लिए। डिफ़ॉल्ट मानों को ओवरराइड करने के लिए केवल चुनिंदा को यहां परिभाषित किया गया है: Magento/Ui/view/base/web/js/form/element/select.js
और Magento/Ui/view/base/web/templates/grid/filters/elements/select.html
। फ़िल्टर और अन्य नोड्स के लिए डिफ़ॉल्ट मान परिभाषित किए गए हैं Magento/Ui/view/base/ui_component/etc/definition.xml
।
अगला नोड है <massAction />
और ग्रिड के लिए बड़े पैमाने पर कार्रवाई को जोड़ने की अनुमति देता है
<massaction name="listing_massaction">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="selectProvider" xsi:type="string">listing_name.listing_name.listing_columns.ids</item>
<item name="component" xsi:type="string">Magento_Ui/js/grid/tree-massactions</item>
<item name="indexField" xsi:type="string">database_id</item>
</item>
</argument>
<action name="delete">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="type" xsi:type="string">delete</item>
<item name="label" xsi:type="string" translate="true">Delete</item>
<item name="url" xsi:type="url" path="*/*/massDelete"/>
<item name="confirm" xsi:type="array">
<item name="title" xsi:type="string" translate="true">Delete items</item>
<item name="message" xsi:type="string" translate="true">Are you sure you wan't to delete selected items?</item>
</item>
</item>
</argument>
</action>
<action name="change_status">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="type" xsi:type="string">change_status</item>
<item name="label" xsi:type="string" translate="true">Change Status</item>
</item>
</argument>
<argument name="actions" xsi:type="configurableObject">
<argument name="class" xsi:type="string">Company\Module\Ui\Component\MassAction\Status\Options</argument>
<argument name="data" xsi:type="array">
<item name="confirm" xsi:type="array">
<item name="title" xsi:type="string" translate="true">Change Status</item>
<item name="message" xsi:type="string" translate="true">Are you sure to change status for selected feed(s)?</item>
</item>
</argument>
</argument>
</action>
</massaction>
name
तर्क अद्वितीय होना चाहिए। पहला बाल नोड <argument />
मूल डेटा को परिभाषित करता है। provider
अन्य नोड्स के समान संरचना का अनुसरण करता है और कॉलम नोड नाम और इसके आईडी कॉलम को संदर्भित करता है। यह कॉलम बड़े पैमाने पर कार्रवाई के लिए चयनित वस्तुओं के साथ चेकबॉक्स रखेगा। component
परिभाषित करता है कि जन कार्रवाई को प्रस्तुत करने और संभालने के लिए किस फ़ाइल का उपयोग किया जाता है। डिफ़ॉल्ट मान Magento_Ui/js/grid/massactions
(अंक Magento/Ui/view/base/web/js/grid/massactions.js
) है। आप Magento_Ui/js/grid/tree-massactions
संरचना की तरह पेड़ को जोड़ने के लिए उपयोग कर सकते हैं । उपरोक्त मामले में मैं इसका उपयोग "स्थिति बदलने" क्रिया को जोड़ने के लिए करता हूं जो "सक्षम" और "अक्षम" विकल्प दिखाता है। <argument />
नोड के बाद आप <action />
जितने कार्य करना चाहते हैं उतने नोड जोड़ सकते हैं । प्रत्येक <action />
नोड समान योजना का अनुसरण करता है। पहले मामले में (कार्रवाई को हटाएं) नोड को अद्वितीय नाम की आवश्यकता होती है। फिर argument
कॉन्फ़िगरेशन कहाँ होता हैlabel
वह है जो चुनिंदा विकल्प में दिखाई देता है, url
डेटा भेजने के लिए समापन बिंदु और भेजने confirm
से पहले पुष्टि मोडल जोड़ता है। url
प्रथम argument
नोड में "स्थिति बदलें" कार्रवाई के मामले में, दूसरी argument
नोड में परिभाषित कक्षा द्वारा प्रति स्टेटस के रूप में url प्रदान किए जाते हैं । वर्ग को Zend \ Stdlib \ JsonSerializable इंटरफ़ेस लागू करना चाहिए। Magento\Customer\Ui\Component\MassAction\Group\Options
संदर्भ के रूप में देखें ।
अंत में <container />
नोड में हमारे पास <paging />
नोड है जो पेजिनेशन को परिभाषित करता है।
<paging name="listing_paging">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="storageConfig" xsi:type="array">
<item name="provider" xsi:type="string">listing_name.listing_name.listing_top.bookmarks</item>
<item name="namespace" xsi:type="string">current.paging</item>
</item>
<item name="selectProvider" xsi:type="string">listing_name.listing_name.listing_columns.ids</item>
</item>
</argument>
</paging>
के लिए संरचना provider
और selectProvider
अब स्पष्ट होना चाहिए।
और मूल ग्रिड के लिए अंतिम नोड है <columns />
। इसमें स्तंभ की सभी परिभाषाएँ हैं जो व्यवस्थापक द्वारा उपयोग के लिए उपलब्ध हैं। नोड के रूप में परिभाषित किया गया है
<columns name="listing_columns"> ... </columns>
और नाम विशेषता का उपयोग अन्य नोड्स में किया जाता है जब इसे संदर्भित करता है। पहला बच्चा है
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="storageConfig" xsi:type="array">
<item name="provider" xsi:type="string">listing_name.listing_name.listing_top.bookmarks</item>
<item name="namespace" xsi:type="string">current</item>
</item>
<item name="childDefaults" xsi:type="array">
<item name="storageConfig" xsi:type="array">
<item name="provider" xsi:type="string">listing_name.listing_name.listing_top.bookmarks</item>
<item name="root" xsi:type="string">columns.${ $.index }</item>
<item name="namespace" xsi:type="string">current.${ $.storageConfig.root}</item>
</item>
<item name="fieldAction" xsi:type="array">
<item name="provider" xsi:type="string">name_listing.name_listing.listing_columns.actions</item>
<item name="target" xsi:type="string">applyAction</item>
<item name="params" xsi:type="array">
<item name="0" xsi:type="string">edit</item>
<item name="1" xsi:type="string">${ $.$data.rowIndex }</item>
</item>
</item>
</item>
</item>
</argument>
मैंने यहां क्या provider
किया, यह लिस्टिंग में इस्तेमाल की गई योजना के बाद केवल सही मूल्य की आपूर्ति थी । fieldAction
नोड सेल पर क्लिक करने पर निकाल दी गई कार्रवाई को परिभाषित करने की अनुमति देता है। डिफ़ॉल्ट सेटिंग्स कॉल को संपादित करती हैं
अगला है <selectionColumns />
<selectionsColumn name="ids">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="resizeEnabled" xsi:type="boolean">false</item>
<item name="resizeDefaultWidth" xsi:type="string">55</item>
<item name="indexField" xsi:type="string">id</item>
</item>
</argument>
</selectionsColumn>
यह नोड उपयोग करने के लिए बड़े पैमाने पर कार्रवाई के लिए चेकबॉक्स के साथ कॉलम को परिभाषित करता है। इसे ऊपर वर्णित कई नोड्स में डॉट के बाद संदर्भित किया जाता है।
उसके बाद आप उसी प्रारूप में किसी भी संख्या में कॉलम जोड़ सकते हैं:
<column name="name" class="Company\Module\Ui\Component\Listing\Column\Name">
<argument name="data" xsi:type="array">
<item name="options" xsi:type="object">Company\Module\Model\Source\Type</item>
<item name="config" xsi:type="array">
<item name="filter" xsi:type="string">select</item>
<item name="component" xsi:type="string">Magento_Ui/js/grid/columns/select</item>
<item name="dataType" xsi:type="string">select</item>
<item name="bodyTmpl" xsi:type="string">ui/grid/cells/html</item>
<item name="label" xsi:type="string" translate="true">Name</item>
<item name="sortOrder" xsi:type="number">80</item>
<item name="visible" xsi:type="boolean">false</item>
</item>
</argument>
</column>
सभी सबसे आंतरिक आइटम नोड आवश्यक नहीं हैं। वे परिभाषित कर रहे हैं:
filter
- कॉलम का फिल्टर प्रकार। इसका उपयोग फिल्टर ब्लॉक में किया जाता है। उपलब्ध मान हैं: पाठ, चयन, तारीख। यदि चयन किया जाता है <item name="options">...</item>
तो इसका उपयोग एक ऐसे वर्ग के रूप में किया जाएगा जो फ़िल्टर चयन के लिए विकल्प प्रदान करता है
component
- जेएस फाइलों को परिभाषित करता है जो कॉलम को रेंडर करने के लिए उपयोग किया जाता है। उपलब्ध विकल्प में हैं Magento/Ui/view/base/web/js/grid/columns/*
। चयन प्रदान किया गया है फ़िल्टर का चयन करने के लिए सेट किया गया है। पाठ फ़िल्टर के लिए इस मान की आवश्यकता नहीं है।
dataType
- स्तंभ मान के लिए उपयोग किए जाने वाले डेटा प्रकार की जानकारी प्रदान करता है। का उपयोग करें चयन के लिए के रूप में अच्छी तरह से, dateRange उपयोग की तारीख के लिए
bodyTmpl
- सेल रेंडर करने के लिए पीटा द्वारा इस्तेमाल HTML फ़ाइल को परिभाषित करता है। डिफ़ॉल्ट रूप से ui / ग्रिड / कोशिकाओं / पाठ का उपयोग किया जाता है ( Magento/Ui/view/base/web/templates/grid/cells/text.html
)। अन्य विकल्प Magento/Ui/view/base/web/templates/grid/cells/*
निर्देशिका में स्थित हैं । ui/grid/cells/html
सेल में HTML सामग्री का उपयोग करने की अनुमति देता है।
label
- यह कॉलम हैडर और फिल्टर ब्लॉक में प्रदर्शित होगा
sortOrder
- आदेश देना
visible
- कॉलम प्रदर्शित करता है या नहीं। इसका उपयोग बुकमार्क के लिए परिभाषित स्तंभों में किया जा सकता है, लेकिन डिफ़ॉल्ट रूप से उन्हें न दिखाएं।
अंत में आप एकल आइटम के लिए उपलब्ध एक्शन कॉलम डायन क्रियाओं को जोड़ सकते हैं
<actionsColumn name="actions" class="Company\Module\Ui\Component\Listing\Column\Actions">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="resizeEnabled" xsi:type="boolean">false</item>
<item name="resizeDefaultWidth" xsi:type="string">107</item>
<item name="indexField" xsi:type="string">database_id</item>
</item>
</argument>
</actionsColumn>
indexField
डेटाबेस में कॉलम नाम को संदर्भित करता है। क्रियाएँ वर्ग का विस्तार Magento\Ui\Component\Listing\Columns\Column
और prepareDataSource
विधि को परिभाषित करना चाहिए । Magento/Cms/Ui/Component/Listing/Column/PageActions.php
एक संदर्भ के रूप में देखें
3) कंपनी / मॉड्यूल / आदि / di.xml में कुछ तत्वों को परिभाषित करने के लिए हमें ग्रिड को खत्म करने की आवश्यकता है
पहले हम प्रदाता वर्ग को परिभाषित करते हैं जो नोड में उपयोग किया गया था dataSource/class
<virtualType name="UniqueNameGridDataProvider" type="Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider">
<arguments>
<argument name="collection" xsi:type="object" shared="false">Company\Module\Model\Resource\Item\Collection</argument>
<argument name="filterPool" xsi:type="object" shared="false">UniqueNameItemIdFilterPool</argument>
</arguments>
</virtualType>
collection
मानक संग्रह वर्ग को हल करता है और filerPool
नए तत्व को परिभाषित करता है:
<virtualType name="UniqueNameItemIdFilterPool" type="Magento\Framework\View\Element\UiComponent\DataProvider\FilterPool">
<arguments>
<argument name="appliers" xsi:type="array">
<item name="regular" xsi:type="object">Magento\Framework\View\Element\UiComponent\DataProvider\RegularFilter</item>
<item name="fulltext" xsi:type="object">Magento\Framework\View\Element\UiComponent\DataProvider\FulltextFilter</item>
</argument>
</arguments>
</virtualType>
यह स्पष्ट रूप से फ़िल्टरिंग और खोज के साथ कुछ करना है। अभी के लिए मैंने हमेशा डिफ़ॉल्ट मानों का उपयोग किया है।
अब हम अपना डेटा स्रोत पंजीकृत करते हैं:
<type name="Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory">
<arguments>
<argument name="collections" xsi:type="array">
<item name="listing_name_data_source" xsi:type="string">Company\Module\Model\Resource\Item\Grid\Collection</item>
</argument>
</arguments>
</type>
इस स्थिति में नोड का नाम <dataSource />
xml को सूचीबद्ध करने में नोड में उपयोग किए जाने वाले से मेल खाना चाहिए और यह संग्रह करने के लिए नहीं बल्कि ग्रिडकोलेशन क्लास में हल होता है। इसे नियमित संग्रह वर्ग का विस्तार करना चाहिए और इसके अतिरिक्त कार्यान्वयन करना चाहिए Magento\Framework\Api\Search\SearchResultInterface
।
अंत में हम अपने ग्रिड संग्रह को कॉन्फ़िगर करते हैं (तर्क के नाम स्पष्ट नहीं हैं)
<type name="Company\Module\Model\Resource\Item\Grid\Collection">
<arguments>
<argument name="mainTable" xsi:type="string">database_table_name</argument>
<argument name="eventPrefix" xsi:type="string">name_for_events</argument>
<argument name="eventObject" xsi:type="string">event_object_name</argument>
<argument name="resourceModel" xsi:type="string">Company\Module\Model\Resource\Item</argument>
</arguments>
</type>