Magento 2'deki bir yönetici formuna nasıl özel bir alan ekleyebilirim?


9

Ben UI bileşenleri kullanarak admin bir form oluşturdum, bu yüzden benim view/adminhtml/ui_component/[module]_[entity]_form.xmlaşağıdaki var:

<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>

Şimdi bu değerin bir textareaolmasını istemiyorum, ancak bu değerin arka ucunda kendi HTML sihrimi oluşturmak istiyorum. Bu 'HTML Magic' sonunda su altında hala form gönderirken bazı gizli veriler gönderen çok sayıda JS / KnockOut olacak, bu yüzden formun bir parçası olması gerekiyor. Ekleyerek bir render ekleme denedim:

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

Ancak bu hala metin alanını oluşturur. Sonra formElementböyle bir özel sınıf ile değiştirmeyi denedim :

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

Ama sonra hatayı alıyorum:

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

Burada 2 soru var:

  1. Bu, yönetici formuna özel form öğesi eklemenin doğru yolu mu? (ve eğer öyleyse: nasıl?)
  2. Her ne olursa olsun: uygulamayı nasıl ekleyebilirim? Nasıl yaptıklarını görmek için UI modülünü araştırıyorum, ancak hiçbir şey bulamıyorum.

Yanıtlar:


10

Kontrol edebilirsiniz magento örnek modülü sağladıkları

<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>

Teşekkürler! tam olarak aradığım cevap! Ben zaten \Magento\Framework\View\Element\UiComponent\Config\Provider\Component\Definition::setComponentData()bir olay kullanarak özel bir bileşen eklemek için bakıyordu , ama bu çok, çok daha uygun! Bu Magento 2 örneklerine daha çok bakmalıyım.
Giel Berkers

3

Emin değilim, ama bunun shopping cart price rulehakkında size bir ipucu vereceğini düşünüyorum , işte örnek

<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>

Daha fazla ayrıntı için bu dosyayı ziyaret edebilirsiniz

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


Bahşiş için teşekkürler! Bu sadece bir HTML içeriği bloğu ekliyor gibi görünüyor. Ama içinde XHR yüklü KnockOut mantığı çok karmaşık bir form öğesi oluşturmak gerekir.
Giel Berkers

admin'de ürün düzenleme formuna özel alan nasıl eklenir?
jafar pinjar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.