¿Cómo agregar masajes en la cuadrícula de productos en magento2?

8

Necesito agregar una acción masiva basada en la configuración.

Si se encuentra en Configuración de configuración, se establece en "Sí / Habilitar", de modo que solo esa acción en masa particular se debe agregar a la cuadrícula del producto.

Sé que puedo agregar directamente acción masiva usando ui_component product_listing.xml. ? Pero el caso es cómo verificar los ajustes de configuración y agregar o eliminar en función de eso

Kapil Karangeeya
fuente
Además, si no es posible con ui_component - product_listing.xml, creo que lo contrario es hacerlo con el observador de eventos. pero de nuevo no puedo hacerlo de ninguna manera con el observador de eventos también.
Kapil Karangeeya
Traté de hacerlo usando un complemento, pero sin éxito. No sé cómo deshabilitar el actionelemento dentro de los componentes secundarios de la acción de masas. Si mi investigación es interesante para usted, puedo publicarla como respuesta más tarde.
Siarhey Uchukhlebau
Para el observador del evento, consulte esta pregunta magento.stackexchange.com/questions/148638/…
Kapil Karangeeya
@SiarheyUchukhlebau Significa que desea eliminar un elemento del menú desplegable de acción masiva.
Kapil Karangeeya
Sí, intenté hacerlo, pero sin éxito :(
Siarhey Uchukhlebau

Respuestas:

1

Para agregar una acción masiva personalizada a la cuadrícula de la interfaz de usuario en función de alguna condición, puede usar la clase personalizada para el componente de la interfaz de usuario de masajes:

<!--/app/code/YourNamespace/YourModule/view/adminhtml/ui_component/product_listing.xml-->
<?xml version="1.0" encoding="UTF-8"?>
<listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
    <listingToolbar name="listing_top">
        <massaction name="listing_massaction" class="YourNamespace\YourModule\Ui\CustomMassAction"/>
    </listingToolbar>
</listing>

E implemente esta clase extendiendo el componente central del módulo Magento_Ui.

namespace YourNamespace\YourModule\Ui;
use Magento\Ui\Component\MassAction;
class CustomMassAction extends MassAction
{
    public function prepare()
    {
        parent::prepare();

        if ($this->isEnabled()) {
            $config = $this->getConfiguration();
            $config['actions'][] = [
                'component' => 'uiComponent',
                'type' => 'custom',
                'label' => 'Custom',
                'url' => '//google.com'
            ];
            $this->setData('config', $config);
        }
    }

    public function isEnabled()
    {
        return true; // access your configuration here
    }
}

Alternativamente, puede aplicar el enfoque viceversa :). Especifique la configuración para su masaje product_listing.xmly elimine su acción de la configuración en la clase de masaje personalizada si está deshabilitada en su configuración.

Otra forma de personalizar las acciones en masa es agregar un complemento para Magento\Ui\Component\MassAction::prepare.

Sergii Ivashchenko
fuente
0

Puede agregar acciones masivas a la cuadrícula de administración de Magento 2 utilizando el siguiente XML en el archivo XML de cuadrícula:

<listingToolbar name="listing_top">
    <settings>
        <sticky>true</sticky>
    </settings>
    <bookmark name="bookmarks"/>
    <columnsControls name="columns_controls"/>
    <filters name="listing_filters"/>
    <paging name="listing_paging"/>
    <massaction name="listing_massaction">
        <action name="update_status">
            <settings>
                <type>update_status</type>
                <label translate="true">Update status</label>
                <actions class="{Namespace}\{Module}\Ui\Component\MassAction\Status\Options"/>
            </settings>
        </action>
        <action name="delete">
            <settings>
                <confirm>
                    <message translate="true">Are you sure to delete selected items?</message>
                    <title translate="true">Delete items</title>
                </confirm>
                <url path="{frontname}/{controller}/{action}"/>
                <type>delete</type>
                <label translate="true">Delete</label>
            </settings>
        </action>
        ...
    </massaction>
    ...
</listingToolbar>

Luego, debe crear su propio controlador y clase de acciones si es necesario. ¿Cómo agregar acción masiva a la grilla de administración de Magento 2? explica en detalle cómo agregar acciones masivas a la cuadrícula de administración de Magento 2.

Hungersoft
fuente