मैं Magento 2 में व्यवस्थापक फ़ॉर्म में कस्टम फ़ील्ड कैसे जोड़ सकता हूं?


9

मैंने UI घटकों का उपयोग करके व्यवस्थापक में एक फ़ॉर्म बनाया है, इसलिए मेरे view/adminhtml/ui_component/[module]_[entity]_form.xmlपास मेरे निम्नलिखित हैं:

<field name="configuration">
    <argument name="data" xsi:type="array">
        <item name="config" xsi:type="array">
            <item name="dataType" xsi:type="string">text</item>
            <item name="label" xsi:type="string" translate="true">Configuration</item>
            <item name="formElement" xsi:type="string">textarea</item>
            <item name="source" xsi:type="string">form</item>
            <item name="sortOrder" xsi:type="number">30</item>
            <item name="dataScope" xsi:type="string">configuration</item>
            <item name="validation" xsi:type="array">
                <item name="required-entry" xsi:type="boolean">true</item>
            </item>
        </item>
    </argument>
</field>

अब मैं नहीं चाहता कि यह मान हो textarea, लेकिन मैं इस मूल्य के बैकएंड में अपना खुद का HTML मैजिक बनाना चाहता हूं। यह 'HTML मैजिक' अंततः JS / KnockOut का एक बहुत होगा जो पानी के नीचे अभी भी फॉर्म पोस्ट करते समय कुछ छिपे हुए डेटा भेजता है, इसलिए इसे फॉर्म का हिस्सा होना चाहिए। मैंने जोड़कर एक रेंडर जोड़ने की कोशिश की:

<item name="renderer" xsi:type="object">Vendor\Module\Block\Adminhtml\Renderer\Configurator</item>

लेकिन यह अभी भी textarea प्रदान करता है। फिर मैंने formElementएक कस्टम क्लास के साथ ऐसा करने की कोशिश की :

<item name="formElement" xsi:type="object">Vendor\Module\Component\Form\Element\Configurator</item>

लेकिन तब मुझे त्रुटि मिलती है:

The requested component ("Vendor\Module\Component\Form\Element\Configurator") is not found. Before using, you must add the implementation.

तो यहाँ 2 प्रश्न:

  1. क्या यह एक कस्टम फ़ॉर्म तत्व को व्यवस्थापक फ़ॉर्म में जोड़ने का सही तरीका है? (और यदि ऐसा है तो: कैसे?)
  2. कुछ भी होने के बावजूद: मैं कार्यान्वयन कैसे जोड़ सकता हूं? मैं यूआई-मॉड्यूल के माध्यम से खुदाई कर रहा हूं यह देखने के लिए कि उन्होंने यह कैसे किया, लेकिन मुझे कुछ भी नहीं मिल रहा है।

जवाबों:


10

आप उनके द्वारा प्रदान किए गए मैग्नेटो नमूना मॉड्यूल की जांच कर सकते हैं

<field name="color">
    <argument name="data" xsi:type="array">
        <item name="config" xsi:type="array">
            <!--component constructor-->
            <item name="component" xsi:type="string">Magento_SampleForm/js/form/element/color-select</item>
            <!--main template for form field that renders elementTmpl as a child template-->
            <item name="template" xsi:type="string">ui/form/field</item>
            <!--customized form element template that will show colors-->
            <item name="elementTmpl" xsi:type="string">Magento_SampleForm/form/element/color-select</item>
            <item name="label" xsi:type="string">Autumn colors</item>
            <item name="visible" xsi:type="boolean">true</item>
            <item name="dataType" xsi:type="string">text</item>
            <item name="formElement" xsi:type="string">input</item>
            <item name="source" xsi:type="string">sampleform</item>
        </item>
    </argument>
</field>

धन्यवाद! बिल्कुल जवाब मैं देख रहा था! मैं पहले से ही \Magento\Framework\View\Element\UiComponent\Config\Provider\Component\Definition::setComponentData()एक घटना का उपयोग करके एक कस्टम घटक जोड़ने के लिए देख रहा था , लेकिन यह बहुत अधिक सुविधाजनक है! मुझे वास्तव में उन Magento के 2 उदाहरणों में और अधिक देखना चाहिए।
गेल बर्कर्स

3

मुझे यकीन नहीं है, लेकिन मुझे लगता है कि shopping cart price ruleआप इस बारे में कुछ संकेत देंगे, यहां उदाहरण है

<field name="stop_rules_processing">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="dataType" xsi:type="string">boolean</item>
                    <item name="formElement" xsi:type="string">checkbox</item>
                    <item name="source" xsi:type="string">sales_rule</item>
                    <item name="prefer" xsi:type="string">toggle</item>
                    <item name="valueMap" xsi:type="array">
                        <item name="true" xsi:type="number">1</item>
                        <item name="false" xsi:type="number">0</item>
                    </item>
                    <item name="default" xsi:type="number">0</item>
                    <item name="label" xsi:type="string" translate="true">Discard subsequent rules</item>
                </item>
            </argument>
        </field>
        <container name="actions_apply_to" >
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="sortOrder" xsi:type="number">40</item>
                </item>
            </argument>
            <htmlContent name="html_content">
                <argument name="block" xsi:type="object">Magento\SalesRule\Block\Adminhtml\Promo\Quote\Edit\Tab\Actions</argument>
            </htmlContent>
        </container>

अधिक विवरण के लिए आप इस फ़ाइल पर जा सकते हैं

\vendor\magento\module-sales-rule\view\adminhtml\ui_component\sales_rule_form.xml


पारितोषिक के लिए धन्यवाद! ऐसा लगता है कि HTML सामग्री का केवल एक ब्लॉक जोड़ना है। लेकिन मुझे एक जटिल फॉर्म एलिमेंट बनाने की ज़रूरत है जिसमें बहुत सारे नॉकऑउट लॉजिक हैं जो एक्सएचआर के साथ लोड किए गए हैं।
गियल बर्क

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