আমি কীভাবে ম্যাজেন্টো 2-তে অ্যাডমিন ফর্মটিতে কাস্টম ফিল্ড যুক্ত করতে পারি?


9

আমি ইউআই উপাদান ব্যবহার করে অ্যাডমিনে একটি ফর্ম তৈরি করেছি, তাই আমার 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, তবে আমি এই মানটির জন্য ব্যাকএন্ডে আমার নিজস্ব এইচটিএমএল যাদু তৈরি করতে চাই। এই 'এইচটিএমএল ম্যাজিক' শেষ পর্যন্ত অনেকগুলি জেএস / নাকআউট হবে যা পানির নিচে এখনও ফর্মটি পোস্ট করার সময় কিছু গোপন তথ্য প্রেরণ করে, সুতরাং এটি ফর্মের অংশ হওয়া দরকার। আমি যোগ করে একটি রেন্ডার যুক্ত করার চেষ্টা করেছি:

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

তবে এটি এখনও পাঠ্যকে রেন্ডার করে। তারপরে আমি এর 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()একটি ইভেন্ট ব্যবহার করে একটি কাস্টম উপাদান যুক্ত করার চেষ্টা করছিলাম , তবে এটি অনেক বেশি সুবিধাজনক! আমার সত্যিই সেই ম্যাজেন্টো 2 উদাহরণগুলিতে আরও নজর দেওয়া উচিত।
জিয়েল বার্কার্স

3

আমি নিশ্চিত নই, তবে আমি মনে করি shopping cart price ruleএটি সম্পর্কে আপনাকে কিছু ইঙ্গিত দেবে, উদাহরণ এখানে is

<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 সামগ্রীর একটি ব্লক যুক্ত করে বলে মনে হচ্ছে। তবে আমাকে একটি জটিল ফর্ম উপাদান তৈরি করতে হবে যার মধ্যে এক্সএইচআর দ্বারা লোড হওয়া অনেক নকআউট যুক্তি রয়েছে।
জিল বার্কার্স

অ্যাডমিনে পণ্য সম্পাদনা ফর্মটিতে কাস্টম ফিল্ড কীভাবে যুক্ত করবেন?
জাফর পিনজার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.