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.