Como adicionar massa na grade do produto no magento2?

8

Preciso adicionar ação em massa com base nas configurações.

Se estiver em Definições de configuração, é definido como "Sim / Ativar", e somente essa ação em massa específica deve ser adicionada à grade do produto.

Eu sei que posso adicionar diretamente ação em massa usando ui_component product_listing.xml. ? Mas caso é como verificar as definições de configuração e adicionar ou remover com base nisso?

Kapil Karangeeya
fonte
Além disso, se não for possível com ui_component - product_listing.xml, do que a outra maneira que penso é fazê-lo com observador de eventos. mas, novamente, não sou capaz de fazê-lo de qualquer maneira com o observador de eventos também.
Kapil Karangeeya
Tentei fazê-lo usando um plug-in, mas sem êxito. Não sei como desativar o actionelemento dentro dos componentes filho da ação em massa. Se minha pesquisa for interessante para você, posso publicá-la como resposta mais tarde.
Siarhey Uchukhlebau
Para observador de eventos, verifique esta questão magento.stackexchange.com/questions/148638/…
Kapil Karangeeya
@SiarheyUchukhlebau Significa que você deseja remover um item do menu suspenso de ação em massa.
Kapil Karangeeya
Sim, tentei fazê-lo, mas sem sucesso :(
Siarhey Uchukhlebau 3/16/16

Respostas:

1

Para adicionar uma ação em massa customizada à grade da interface do usuário com base em alguma condição, você pode usar a classe customizada para o componente da interface do usuário da massaction:

<!--/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 essa classe estendendo o componente principal do 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
    }
}

Como alternativa, você pode aplicar a abordagem vice-versa :). Especifique a configuração para sua massa product_listing.xmle remova sua ação da configuração na classe de massa customizada, se ela estiver desativada em sua configuração.

Outra maneira de personalizar ações em massa é adicionar um plugin para Magento\Ui\Component\MassAction::prepare.

Sergii Ivashchenko
fonte
0

Você pode adicionar ações em massa à grade administrativa do Magento 2 usando o seguinte XML no arquivo XML da grade:

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

Você precisará criar seu próprio controlador e classe de ações, se necessário. Como adicionar ação em massa à grade de administração do Magento 2? explica em detalhes como adicionar ações em massa à sua grade administrativa do Magento 2.

hungersoft
fonte