Untuk menambahkan tindakan massa kustom ke ui grid berdasarkan beberapa kondisi Anda dapat menggunakan kelas kustom untuk komponen ui 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>
Dan mengimplementasikan kelas ini memperluas komponen inti dari modul 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
}
}
Atau Anda dapat menerapkan pendekatan sebaliknya :). Tentukan konfigurasi untuk massaction Anda di product_listing.xml
dan hapus tindakan Anda dari konfigurasi di kelas massaction khusus jika dinonaktifkan di konfigurasi Anda.
Cara lain untuk menyesuaikan tindakan massal adalah menambahkan plugin untuk Magento\Ui\Component\MassAction::prepare
.