Implement massactions in grid using ui_component magento2

635 views Asked by At

How to Implement massactions in grid using ui_component magento2. I have created my ui_component and need to implement massactions. I have also created controllers for the required paths. But, somehow it is just not working.

ui_component/test_grid.xml

<massaction name="listing_massaction">
    <argument name="data" xsi:type="array">
        <item name="config" xsi:type="array">
            <item name="selectProvider" xsi:type="string">test_grid.test_grid.test_grid_columns.ids</item>
            <item name="component" xsi:type="string">Magento_Ui/js/grid/tree-massactions</item>
            <item name="indexField" xsi:type="string">entity_id</item>
        </item>
    </argument>
    <action name="reject">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="type" xsi:type="string">rejected</item>
                <item name="label" xsi:type="string" translate="true">Reject</item>
                <item name="url" xsi:type="url" path="*/*/MassDelete"><item/>
                <item name="confirm" xsi:type="array">
                    <item name="title" xsi:type="string" translate="true">Reject items</item>
                    <item name="message" xsi:type="string" translate="true">Are you sure to reject selected Requests?</item>
                </item>
            </item>
        </argument>
    </action>
    <action name="accept">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="type" xsi:type="string">accepted</item>
                <item name="label" xsi:type="string" translate="true">Accept</item>
                <item name="url" xsi:type="string">test/Index/Massaccept</item>                        
            </item>
        </argument>
    </action>
</massaction>

My controllers are in the path:

Vendor/Module/Controller/Adminhtml/Index/Massaccept.php Vendor/Module/Controller/Adminhtml/Index/Massreject.php

The mass actions are visible on the grid, but are not redirecting anywhere.

2

There are 2 answers

0
Shreya Maria On

Update your code as shown below

<massaction name="listing_massaction">
    <argument name="data" xsi:type="array">
        <item name="config" xsi:type="array">
            <item name="selectProvider" xsi:type="string">test_grid.test_grid.test_grid_columns.ids</item>
            <item name="component" xsi:type="string">Magento_Ui/js/grid/tree-massactions</item>
            <item name="indexField" xsi:type="string">entity_id</item>
        </item>
    </argument>
    <action name="reject">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="type" xsi:type="string">rejected</item>
                <item name="label" xsi:type="string" translate="true">Reject</item>
                <item name="url" xsi:type="url" path="*/*/MassReject"><item/>
                <item name="confirm" xsi:type="array">
                    <item name="title" xsi:type="string" translate="true">Reject items</item>
                    <item name="message" xsi:type="string" translate="true">Are you sure to reject selected Requests?</item>
                </item>
            </item>
        </argument>
    </action>
    <action name="accept">
        <argument name="data" xsi:type="array">
            <item name="config" xsi:type="array">
                <item name="type" xsi:type="string">Accept</item>
                <item name="label" xsi:type="string" translate="true">Accept</item>
                <item name="url" xsi:type="url" path="*/*/MassAccept"><item/>
                <item name="confirm" xsi:type="array">
                    <item name="title" xsi:type="string" translate="true">Accept items</item>
                    <item name="message" xsi:type="string" translate="true">Are you sure to Accept selected Requests?</item>
                </item>
            </item>
        </argument>
    </action>
</massaction>
1
Brinda On

Try to add a route file in the below path: Namespace\Modulename\etc\adminhtml\routes.xml

Like,

<?xml version="1.0"?>
<!--
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
    <router id="admin">
        <route id="id" frontName="name">
            <module name="Namespace_Modulename" />
        </route>
    </router>
</config>