magento 2 how to override catalog_rule_form.xml
-
14-04-2021 - |
Question
I want to add a custom action into catalog sales rule backend page, i add this xml in my custom module
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