Để thêm một hành động khối tùy chỉnh vào lưới ui dựa trên một số điều kiện, bạn có thể sử dụng lớp tùy chỉnh cho thành phần ui khối lượng:
<!--/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>
Và thực hiện lớp này mở rộng thành phần cốt lõi từ mô-đun 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
}
}
Ngoài ra, bạn có thể áp dụng cách tiếp cận ngược lại :). Chỉ định cấu hình cho khối lượng của bạn trong product_listing.xml
và loại bỏ hành động của bạn khỏi cấu hình trong lớp khối lượng tùy chỉnh nếu nó bị vô hiệu hóa trong cấu hình của bạn.
Một cách khác để tùy chỉnh các hành động hàng loạt là thêm một plugin cho Magento\Ui\Component\MassAction::prepare
.