Question

I want to add a custom action into catalog sales rule backend page, i add this xml in my custom module enter image description here

here is the xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
    <argument name="data" xsi:type="array">
        <item name="js_config" xsi:type="array">
            <item name="provider" xsi:type="string">catalog_rule_form.catalog_rule_form_data_source</item>
        </item>
        <item name="label" xsi:type="string" translate="true">Catalog Price Rule</item>
        <item name="template" xsi:type="string">templates/form/collapsible</item>
    </argument>
    <settings>
        <buttons>
            <button name="delete" class="Magento\CatalogRule\Block\Adminhtml\Edit\DeleteButton"/>
            <button name="save_and_apply" class="Magento\CatalogRule\Block\Adminhtml\Edit\SaveAndApplyButton"/>
            <button name="save_and_continue" class="Magento\CatalogRule\Block\Adminhtml\Edit\SaveAndContinueButton"/>
            <button name="reset" class="Magento\CatalogRule\Block\Adminhtml\Edit\ResetButton"/>
            <button name="save" class="Magento\CatalogRule\Block\Adminhtml\Edit\SaveButton"/>
            <button name="back">
                <url path="*/*/"/>
                <class>back</class>
                <label translate="true">Back</label>
            </button>
        </buttons>
        <namespace>catalog_rule_form</namespace>
        <dataScope>data</dataScope>
        <deps>
            <dep>catalog_rule_form.catalog_rule_form_data_source</dep>
        </deps>
    </settings>
    <dataSource name="catalog_rule_form_data_source">
        <argument name="data" xsi:type="array">
            <item name="js_config" xsi:type="array">
                <item name="component" xsi:type="string">Magento_Ui/js/form/provider</item>
            </item>
        </argument>
        <settings>
            <submitUrl path="catalog_rule/promo_catalog/save"/>
        </settings>
        <dataProvider class="Magento\CatalogRule\Model\Rule\DataProvider" name="catalog_rule_form_data_source">
            <settings>
                <requestFieldName>id</requestFieldName>
                <primaryFieldName>rule_id</primaryFieldName>
            </settings>
        </dataProvider>
    </dataSource>
    <fieldset name="rule_information" sortOrder="10">
        <settings>
            <collapsible>true</collapsible>
            <opened>true</opened>
            <label translate="true">Rule Information</label>
        </settings>
        <field name="rule_id" formElement="input">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">catalog_rule</item>
                </item>
            </argument>
            <settings>
                <dataType>text</dataType>
                <visible>false</visible>
                <dataScope>rule_id</dataScope>
            </settings>
        </field>
        <field name="name" formElement="input">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">catalog_rule</item>
                </item>
            </argument>
            <settings>
                <validation>
                    <rule name="required-entry" xsi:type="boolean">true</rule>
                </validation>
                <dataType>text</dataType>
                <label translate="true">Rule Name</label>
                <visible>true</visible>
                <dataScope>name</dataScope>
            </settings>
        </field>
        <field name="description" formElement="textarea">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">catalog_rule</item>
                </item>
            </argument>
            <settings>
                <dataType>text</dataType>
                <label translate="true">Description</label>
                <visible>true</visible>
                <dataScope>description</dataScope>
            </settings>
        </field>
        <field name="is_active" formElement="checkbox">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">catalog_rule</item>
                    <item name="default" xsi:type="number">0</item>
                </item>
            </argument>
            <settings>
                <validation>
                    <rule name="required-entry" xsi:type="boolean">true</rule>
                </validation>
                <dataType>boolean</dataType>
                <label translate="true">Active</label>
            </settings>
            <formElements>
                <checkbox>
                    <settings>
                        <valueMap>
                            <map name="false" xsi:type="number">0</map>
                            <map name="true" xsi:type="number">1</map>
                        </valueMap>
                        <prefer>toggle</prefer>
                    </settings>
                </checkbox>
            </formElements>
        </field>
        <field name="website_ids" formElement="multiselect">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">catalog_rule</item>
                </item>
            </argument>
            <settings>
                <validation>
                    <rule name="required-entry" xsi:type="boolean">true</rule>
                </validation>
                <dataType>number</dataType>
                <tooltip>
                    <link>https://docs.magento.com/m2/ce/user_guide/configuration/scope.html</link>
                    <description>What is this?</description>
                </tooltip>
                <label translate="true">Websites</label>
                <dataScope>website_ids</dataScope>
            </settings>
            <formElements>
                <multiselect>
                    <settings>
                        <options class="Magento\CatalogRule\Model\Rule\WebsitesOptionsProvider"/>
                    </settings>
                </multiselect>
            </formElements>
        </field>
        <field name="customer_group_ids" formElement="multiselect">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">catalog_rule</item>
                </item>
            </argument>
            <settings>
                <validation>
                    <rule name="required-entry" xsi:type="boolean">true</rule>
                </validation>
                <dataType>number</dataType>
                <label translate="true">Customer Groups</label>
                <dataScope>customer_group_ids</dataScope>
            </settings>
            <formElements>
                <multiselect>
                    <settings>
                        <options class="Magento\CatalogRule\Model\Rule\CustomerGroupsOptionsProvider"/>
                    </settings>
                </multiselect>
            </formElements>
        </field>
        <field name="from_date" formElement="date">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">catalog_rule</item>
                </item>
            </argument>
            <settings>
                <validation>
                    <rule name="validate-date" xsi:type="boolean">true</rule>
                </validation>
                <dataType>text</dataType>
                <label translate="true">From</label>
                <visible>true</visible>
                <dataScope>from_date</dataScope>
            </settings>
        </field>
        <field name="to_date" formElement="date">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">catalog_rule</item>
                </item>
            </argument>
            <settings>
                <validation>
                    <rule name="validate-date" xsi:type="boolean">true</rule>
                </validation>
                <dataType>text</dataType>
                <label translate="true">To</label>
                <visible>true</visible>
                <dataScope>to_date</dataScope>
            </settings>
        </field>
        <field name="sort_order" formElement="input">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">catalog_rule</item>
                </item>
            </argument>
            <settings>
                <dataType>text</dataType>
                <label translate="true">Priority</label>
                <dataScope>sort_order</dataScope>
            </settings>
        </field>
    </fieldset>
    <fieldset name="actions" sortOrder="30">
        <settings>
            <collapsible>true</collapsible>
            <label translate="true">Actions</label>
        </settings>
        <field name="simple_action" formElement="select">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">catalog_rule</item>
                </item>
            </argument>
            <settings>
                <switcherConfig>
                    <rules>
                        <rule name="0">
                            <value>by_percent</value>
                            <actions>
                                <action name="0">
                                    <target>catalog_rule_form.catalog_rule_form.actions.discount_amount</target>
                                    <callback>setValidation</callback>
                                    <params>
                                        <param name="0" xsi:type="string">validate-number-range</param>
                                        <param name="1" xsi:type="string">0.00-100.00</param>
                                    </params>
                                </action>
                            </actions>
                        </rule>
                        <rule name="1">
                            <value>to_percent</value>
                            <actions>
                                <action name="0">
                                    <target>catalog_rule_form.catalog_rule_form.actions.discount_amount</target>
                                    <callback>setValidation</callback>
                                    <params>
                                        <param name="0" xsi:type="string">validate-number-range</param>
                                        <param name="1" xsi:type="string">0.00-100.00</param>
                                    </params>
                                </action>
                            </actions>
                        </rule>
                        <rule name="2">
                            <value>by_fixed</value>
                            <actions>
                                <action name="0">
                                    <target>catalog_rule_form.catalog_rule_form.actions.discount_amount</target>
                                    <callback>setValidation</callback>
                                    <params>
                                        <param name="0" xsi:type="string">validate-number-range</param>
                                        <param name="1" xsi:type="string">false</param>
                                    </params>
                                </action>
                            </actions>
                        </rule>
                        <rule name="3">
                            <value>to_fixed</value>
                            <actions>
                                <action name="0">
                                    <target>catalog_rule_form.catalog_rule_form.actions.discount_amount</target>
                                    <callback>setValidation</callback>
                                    <params>
                                        <param name="0" xsi:type="string">validate-number-range</param>
                                        <param name="1" xsi:type="string">false</param>
                                    </params>
                                </action>
                            </actions>
                        </rule>
                        <rule name="4">
                            <value>custom</value>
                            <actions>
                                <action name="0">
                                    <target>catalog_rule_form.catalog_rule_form.actions.discount_amount</target>
                                    <callback>setValidation</callback>
                                    <params>
                                        <param name="0" xsi:type="string">validate-number-range</param>
                                        <param name="1" xsi:type="string">false</param>
                                    </params>
                                </action>
                            </actions>
                        </rule>
                    </rules>
                    <enabled>true</enabled>
                </switcherConfig>
                <dataType>number</dataType>
                <label translate="true">Apply</label>
                <dataScope>simple_action</dataScope>
            </settings>
            <formElements>
                <select>
                    <settings>
                        <options class="Magento\CatalogRule\Model\Rule\Action\SimpleActionOptionsProvider"/>
                    </settings>
                </select>
            </formElements>
        </field>
        <field name="discount_amount" formElement="input">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="source" xsi:type="string">catalog_rule</item>
                </item>
            </argument>
            <settings>
                <validation>
                    <rule name="required-entry" xsi:type="boolean">true</rule>
                    <rule name="validate-number-range" xsi:type="string">0.00-100.00</rule>
                </validation>
                <dataType>text</dataType>
                <label translate="true">Discount Amount</label>
                <dataScope>discount_amount</dataScope>
            </settings>
        </field>
        <field name="stop_rules_processing" formElement="select">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="fieldGroup" xsi:type="string">bool</item>
                    <item name="value" xsi:type="string">0</item>
                    <item name="source" xsi:type="string">catalog_rule</item>
                </item>
            </argument>
            <settings>
                <dataType>number</dataType>
                <label translate="true">Discard subsequent rules</label>
                <dataScope>stop_rules_processing</dataScope>
            </settings>
            <formElements>
                <select>
                    <settings>
                        <options>
                            <option name="0" xsi:type="array">
                                <item name="value" xsi:type="number">1</item>
                                <item name="label" xsi:type="string" translate="true">Yes</item>
                            </option>
                            <option name="1" xsi:type="array">
                                <item name="value" xsi:type="number">0</item>
                                <item name="label" xsi:type="string" translate="true">No</item>
                            </option>
                        </options>
                    </settings>
                </select>
            </formElements>
        </field>
    </fieldset>
    <htmlContent name="block_promo_catalog_edit_tab_conditions" sortOrder="20">
        <argument name="data" xsi:type="array">
            <item name="wrapper" xsi:type="array">
                <item name="label" xsi:type="string" translate="true">Conditions</item>
                <item name="collapsible" xsi:type="boolean">true</item>
                <item name="opened" xsi:type="boolean">false</item>
            </item>
        </argument>
        <settings>
            <wrapper>
                <canShow>true</canShow>
                <componentType>fieldset</componentType>
            </wrapper>
        </settings>
        <block class="Magento\CatalogRule\Block\Adminhtml\Promo\Catalog\Edit\Tab\Conditions" name="promo_catalog_edit_tab"/>
    </htmlContent>
</form>

i've added

<rule name="4">
    <value>custom</value>
    <actions>
<action name="0">
<target>catalog_rule_form.catalog_rule_form.actions.discount_amount</target>
<callback>setValidation</callback>
<params>
<param name="0" xsi:type="string">validate-number-range</param>
<param name="1" xsi:type="string">false</param>
</params>
</action>
</actions>
</rule>

but it doesn't show, anyone know how to do that?

No correct solution

Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange
scroll top