0

I am facing an issue on the edit page with the dynamic row. I added two dynamic row blocks. One block for global off days and one is for Postal code delay days. In both containers, I added a date picker to select a date. In the first container 'Global day off' is working fine while the second container not working in edit while values are saved in the database in sterilised form for both fields.

<?xml version="1.0" encoding="UTF-8"?>
<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">delivery_rule_form.delivery_rule_form_data_source</item>
        <item name="deps" xsi:type="string">delivery_rule_form.delivery_rule_form_data_source</item>
    </item>
    <item name="label" xsi:type="string" translate="true">Rule Form</item>
    <item name="layout" xsi:type="array">
        <item name="type" xsi:type="string">tabs</item>
    </item>

    <item name="buttons" xsi:type="array">
        <item name="back" xsi:type="array">
            <item name="name" xsi:type="string">back</item>
            <item name="label" xsi:type="string" translate="true">Back</item>
            <item name="class" xsi:type="string">back</item>
            <item name="url" xsi:type="string">*/*/</item>
        </item>
        <item name="save" xsi:type="array">
            <item name="name" xsi:type="string">save</item>
            <item name="label" xsi:type="string" translate="true">save</item>
            <item name="class" xsi:type="string">primary</item>
        </item>
    </item>

</argument>
<dataSource name="delivery_rule_form_data_source">
    <argument name="dataProvider" xsi:type="configurableObject">
        <argument name="class" xsi:type="string">Ciklum\OrderDeliveryRules\Model\Rule\DataProvider</argument>
        <argument name="name" xsi:type="string">delivery_rule_form_data_source</argument>
        <argument name="primaryFieldName" xsi:type="string">id</argument>
        <argument name="requestFieldName" xsi:type="string">id</argument>
    </argument>
    <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 name="submit_url" path="*/*/save" xsi:type="url"/>
        </item>
    </argument>
</dataSource>

<fieldset name="rule_fieldset">
    <argument name="data" xsi:type="array">
        <item name="config" xsi:type="array">
            <item name="label" xsi:type="string" translate="true">Rule Information</item>
        </item>
    </argument>

    <dynamicRows name="global_off_days">
        <settings>
            <label translate="true">Global Off Days</label>
            <addButtonLabel translate="true">Add Date</addButtonLabel>
            <dndConfig>
                <param name="enabled" xsi:type="boolean">true</param>
                <param name="draggableElementClass" xsi:type="string">_dragged</param>
                <param name="tableClass" xsi:type="string">table.admin__dynamic-rows</param>
            </dndConfig>
        </settings>
        <container name="record" component="Magento_Ui/js/dynamic-rows/record">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="isTemplate" xsi:type="boolean">true</item>
                    <item name="is_collection" xsi:type="boolean">true</item>
                    <item name="componentType" xsi:type="string">container</item>
                </item>
            </argument>
            <field name="off_day">
                <argument name="data" xsi:type="array">
                    <item name="config" xsi:type="array">
                        <item name="filter" xsi:type="string">dateRange</item>
                        <item name="dataType" xsi:type="string">date</item>
                        <item name="formElement" xsi:type="string">input</item>
                        <item name="component" xsi:type="string">Magento_Ui/js/form/element/date</item>
                        <item name="label" xsi:type="string" translate="true">Date</item>
                        <item name="dataScope" xsi:type="string">off_day</item>
                        <item name="disabled" xsi:type="boolean">false</item>
                        <item name="options" xsi:type="array">
                            <item name="dateFormat" xsi:type="string">y-MM-dd</item>
                        </item>
                        <item name="sortOrder" xsi:type="string">30</item>
                    </item>
                </argument>
            </field>
            <actionDelete name="action_delete">
                <argument name="data" xsi:type="array">
                    <item name="config" xsi:type="array">
                        <item name="fit" xsi:type="boolean">true</item>
                        <item name="prefixElementName" xsi:type="string">option_</item>
                        <item name="prefixName" xsi:type="string">Params.delete</item>
                        <item name="dataType" xsi:type="string">text</item>
                    </item>
                </argument>
                <settings>
                    <dataType>text</dataType>
                    <componentType>actionDelete</componentType>
                </settings>
            </actionDelete>
        </container>
    </dynamicRows>

    <dynamicRows name="postal_code_delay_days">
        <settings>
            <label translate="true">Global Off Days</label>
            <addButtonLabel translate="true">Add Date</addButtonLabel>
            <dndConfig>
                <param name="enabled" xsi:type="boolean">true</param>
                <param name="draggableElementClass" xsi:type="string">_dragged</param>
                <param name="tableClass" xsi:type="string">table.admin__dynamic-rows</param>
            </dndConfig>
        </settings>
        <container name="record" component="Magento_Ui/js/dynamic-rows/record">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="isTemplate" xsi:type="boolean">true</item>
                    <item name="is_collection" xsi:type="boolean">true</item>
                    <item name="componentType" xsi:type="string">container</item>
                </item>
            </argument>
            <field name="off_day">
                <argument name="data" xsi:type="array">
                    <item name="config" xsi:type="array">
                        <item name="filter" xsi:type="string">dateRange</item>
                        <item name="dataType" xsi:type="string">date</item>
                        <item name="formElement" xsi:type="string">input</item>
                        <item name="component" xsi:type="string">Magento_Ui/js/form/element/date</item>
                        <item name="label" xsi:type="string" translate="true">Date</item>
                        <item name="dataScope" xsi:type="string">off_day</item>
                        <item name="disabled" xsi:type="boolean">false</item>
                        <item name="options" xsi:type="array">
                            <item name="dateFormat" xsi:type="string">y-MM-dd</item>
                        </item>
                        <item name="sortOrder" xsi:type="string">30</item>
                    </item>
                </argument>
            </field>
            <actionDelete name="action_delete">
                <argument name="data" xsi:type="array">
                    <item name="config" xsi:type="array">
                        <item name="fit" xsi:type="boolean">true</item>
                        <item name="prefixElementName" xsi:type="string">option_</item>
                        <item name="prefixName" xsi:type="string">Params.delete</item>
                        <item name="dataType" xsi:type="string">text</item>
                    </item>
                </argument>
                <settings>
                    <dataType>text</dataType>
                    <componentType>actionDelete</componentType>
                </settings>
            </actionDelete>
        </container>
    </dynamicRows>
</fieldset>
5
  • Your both fields name same here :<field name="off_day"> try to change it and then check. Jun 7, 2021 at 10:14
  • @DhirenVasoya I tried but still, it's not working.
    – Noman Rauf
    Jun 7, 2021 at 10:18
  • you have to run all the commands and then need to check. Jun 7, 2021 at 10:21
  • yes, i run all the commands
    – Noman Rauf
    Jun 7, 2021 at 10:23
  • I solved the issue. The issue is with the data provider. Actually, I save data in the database in serialized form. When I edit I need to unserialize data so the dynamic row can read data from the array. ` $rule->setData('postal_code_delay_days', [ 'postal_code_delay_days' => unserialize($rule->getData('postal_code_delay_days')) ]);`
    – Noman Rauf
    Jun 8, 2021 at 5:47

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.