Реализация массовых действий в сетке с использованием ui_component magento2

#magento #grid #magento2 #adminhtml #uicomponents

#magento #сетка #magento2 #adminhtml #uicomponents

Вопрос:

Как реализовать массовые действия в сетке с использованием ui_component magento2. Я создал свой ui_component и должен реализовать massactions. Я также создал контроллеры для требуемых путей. Но почему-то это просто не работает.

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>
  

Мои контроллеры находятся на пути:

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

Массовые действия видны в сетке, но никуда не перенаправляются.

Ответ №1:

Обновите свой код, как показано ниже

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

Ответ №2:

Попробуйте добавить файл маршрута по указанному ниже пути: NamespaceModulenameetcadminhtmlroutes.xml

Нравится,

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

Комментарии:

1. Добавьте приведенный выше код файла маршрута после завершения работы с файлом списка компонентов пользовательского интерфейса.