Come aggiungere la massa nella griglia del prodotto in magento2?


8

Devo aggiungere un'azione di massa basata su Impostazioni.

Se nelle impostazioni di configurazione, è impostato su "Sì / Abilita", è necessario aggiungere alla griglia del prodotto solo quella particolare azione di massa.

So di poter aggiungere direttamente un'azione di massa usando ui_component product_listing.xml. ? Ma come è possibile controllare le impostazioni di configurazione e aggiungere o rimuovere in base a ciò?


Inoltre, se non è possibile con ui_component - product_listing.xml, rispetto all'altro modo in cui penso sia farlo con l'osservatore di eventi. ma ancora una volta non sono in grado di farlo con entrambi gli osservatori di eventi.
— Kapil Karangeeya,

Ho provato a farlo usando un plugin, ma senza successo. Non so come disabilitare l' actionelemento all'interno dei componenti figlio dell'azione di massa. Se la mia ricerca è interessante per te, posso postarla come risposta in seguito.
— Siarhey Uchukhlebau,

Per l'osservatore di eventi, controlla questa domanda magento.stackexchange.com/questions/148638/…
— Kapil Karangeeya,

@SiarheyUchukhlebau Significa che desideri rimuovere un elemento dal menu a discesa delle azioni di massa.?
— Kapil Karangeeya,

Sì, ho provato a farcela, ma senza successo :(
— Siarhey Uchukhlebau,

Risposte:


1

Per aggiungere un'azione di massa personalizzata alla griglia dell'interfaccia utente in base a una condizione, è possibile utilizzare la classe personalizzata per il componente dell'interfaccia utente di massazione:

<!--/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 implementare questa classe estendendo il componente principale dal modulo 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
    }
}

In alternativa puoi applicare l'approccio viceversa :). Specifica la configurazione per la tua massazione product_listing.xmle rimuovi la tua azione dalla configurazione nella classe di massazione personalizzata se è disabilitata nella configurazione.

Un altro modo per personalizzare le azioni di massa è l'aggiunta di un plugin per Magento\Ui\Component\MassAction::prepare.


0

Puoi aggiungere azioni di massa alla griglia di amministrazione di Magento 2 usando il seguente XML nel file XML della griglia:

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

È quindi necessario creare il proprio controller e la propria classe di azioni, se necessario. Come aggiungere un'azione di massa alla griglia di amministrazione di Magento 2? spiega in dettaglio come aggiungere azioni di massa alla griglia di amministrazione di Magento 2.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.