Magento 2 Adminhtml कई टैब में फ़ॉर्म फैला रहा है


42

मैं बैकएंड मॉड्यूल बनाने का प्रयास कर रहा हूं, जिसमें मेरे संपादन पृष्ठ पर मैं admin-2column-leftलेआउट का उपयोग करता हूं ।

मैं प्रत्येक टैब पर एक फॉर्म रखना चाहता हूं, लेकिन मुझे समझ नहीं आ रहा है कि मैं यह कैसे कर सकता हूं।
आदर्श रूप से, मैं यह जानना चाहूंगा कि अलग- uiComponentsअलग टैब के लिए अलग-अलग फॉर्म कैसे असाइन करें, या मैं uiComponentअपने फॉर्म के लिए किसी को कैसे परिभाषित कर सकता हूं, लेकिन यह निर्धारित करने में सक्षम हूं कि कौन सा फ़ील्ड सेट किस टैब पर जाता है।

मेरी विशिष्ट स्थिति, जो इस प्रश्न को भड़काती है, यह है कि मैं एक टैब (एकाधिक पाठ इनपुट) पर एक मानक रूप रखना चाहता हूं, और दूसरे टैब पर, मैं एक dynamicRowsयूआई घटक रखना चाहता हूं । हमने इन टैब को मेन और लाइन आइटम कहा है।

वर्तमान में, मैं इसे इस प्रकार लागू कर रहा हूं: मुख्य को _prepareFormइसके ब्लॉक के भीतर विधि में परिभाषित किया गया है , जो एक वर्ग विस्तार है Form\Generic। यह प्रपत्र तब तक प्रकट होता है और तब तक ठीक काम करता है जब तक कि मैं गतिशील पंक्तियों को नहीं जोड़ता।

मेरी लेआउट फ़ाइल में मेन टैब जोड़ने और कंटेंट ब्लॉक असाइन करने का कोड है। साथ ही इसमें एक कंटेनर नाम दिया गया है line_items, जिसमें uiComponentगतिशील पंक्तियों वाले फॉर्म के लिए है।

लाइन आइटम टैब की _beforeToHtmlविधि में बनाया गया है Widget\Tab, और इसकी सामग्री को getChildHtmlलाइन_टाइम्स कंटेनर पर कॉल का उपयोग करके असाइन किया गया है ।

टैब काम करता है और सही संरचना के साथ आबादी है, जिससे मुझे पंक्तियों को जोड़ने और हटाने की अनुमति मिलती है।

मुद्दा यह है कि जब मैं पृष्ठ सबमिट करता हूं, तो लाइन आइटम टैब में केवल इनपुट सबमिट किए जाते हैं।

इसलिए मुझे पता है कि मैंने इसे सही तरीके से सेट नहीं किया है, और इसे सभी फॉर्म तत्वों को ट्रैक करने और सबमिट करने के निर्देश देने के लिए किसी तरह की आवश्यकता है। इस कार्यान्वयन का अधिकांश हिस्सा श्रेणी उत्पाद गुण फॉर्म के सेटअप को रिवर्स इंजीनियर करने के मेरे प्रयासों से प्राप्त होता है, जो कि मैं करना चाहता हूं।

किसी को भी इसके बारे में विचार है?


क्या आपको इसका कभी पता चला?
जमील

1
स्टीफन - मैं यह मान रहा हूं कि आपने इस समय के बाद एक समाधान ढूंढ लिया है? यदि ऐसा है तो क्या आप इसे अपने समाधान के साथ अपडेट कर सकते हैं?
ब्रेंटवेटर्सन

@ स्टीफन फ्रिट्ज - क्या आप कृपया स्क्रीनशॉट प्रदान कर सकते हैं कि आप कैसे खोज रहे हैं?
प्रफुल्ल राजपूत

क्या मैं पूछ सकता हूं कि क्या इस सवाल का जवाब अभी भी चाहिए? यदि ऐसा होता है, तो मैं सत्यापित कर सकता हूं कि मैं समस्या को समझ सकता हूं: क्या हम इसमें अलग-अलग रूपों के साथ बैकएंड स्क्रीन बनाने की कोशिश कर रहे हैं? या कई टैब के साथ एक स्क्रीन है (uiComponent फैशन) इस मुद्दे का समाधान हो सकता है?
हेरिव ट्रिब्यूयलो

1
@ स्टीफन फ्रिट्ज - कृपया फ़ील्डसेट नाम बदलने का प्रयास करें क्योंकि यह अद्वितीय होना चाहिए कहीं और इसका परस्पर विरोधी होना। मैंने एक ही जारी किया है और फ़ील्डसेट का नाम बदलकर इसका हल किया है
अब्दुल कादिर

जवाबों:


0

UI- घटक का उपयोग करके एकल रूप के साथ टैब बनाने के लिए निम्न कोड का उपयोग करें

<argument name="data" xsi:type="array">
    <item name="js_config" xsi:type="array">
        <item name="provider" xsi:type="string">custom_form.custom_form_data_source</item>
        <!--This is for tab -->
        <item name="deps" xsi:type="string">custom_form.custom_form_data_source</item>
    </item>

    <!--following tag add the tab into form-->
    <item name="label" xsi:type="string" translate="true">Test Details</item>
    <item name="reverseMetadataMerge" xsi:type="boolean">true</item>
   <item name="layout" xsi:type="array">
        <item name="type" xsi:type="string">tabs</item>
        <item name="navContainerName" xsi:type="string">left</item>
    </item>

</argument>

एक फार्म एलिमेंट बनाएं

 <fieldset name="general">
    <argument name="data" xsi:type="array">
        <item name="config" xsi:type="array">
            <item name="label" xsi:type="string">General Information</item>
        </item>
    </argument>

    <field name="name">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="source" xsi:type="string">general</item>
                <item name="label" xsi:type="string">Name</item>
                <item name="formElement" xsi:type="string">input</item>
                <item name="dataType" xsi:type="string">text</item>
                <item name="dataScope" xsi:type="string">name</item>
                <item name="validation" xsi:type="array">
                    <item name="required-entry" xsi:type="boolean">true</item>
                </item>
            </item>
        </argument>
    </field>
 </fieldset>
 <fieldset name="address">
    <argument name="data" xsi:type="array">
        <item name="config" xsi:type="array">
            <item name="label" xsi:type="string">Address and Contact</item>
        </item>
    </argument>
    <field name="address_line1">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="source" xsi:type="string">address</item>
                <item name="label" xsi:type="string">Address Line1</item>
                <item name="formElement" xsi:type="string">input</item>
                <item name="datatype" xsi:type="string">text</item>
                <item name="datascope" xsi:type="string">address_line1</item>
            </item>
        </argument>
    </field>

    <field name="address_line2">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="source" xsi:type="string">address</item>
                <item name="label" xsi:type="string">Address Line2</item>
                <item name="formElement" xsi:type="string">input</item>
                <item name="datatype" xsi:type="string">text</item>
                <item name="datascope" xsi:type="string">address_line2</item>
            </item>
        </argument>
    </field>
  </fieldset>

यह कोड संबंधित फॉर्म फ़ील्ड के साथ फॉर्म पर 2 टैब प्रदर्शित करेगा।

आशा है कि यह समाधान आपके लिए काम करता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.