如何在magento2的产品网格中添加大众化?


8

我需要根据设置添加群众活动。

如果在“配置”设置中将其设置为“是/启用”,则仅应将特定的质量作用添加到产品网格中。

我知道我可以使用ui_component product_listing.xml直接添加大规模行动。?但是情况是如何检查配置设置并基于此添加或删除呢?


另外,如果不能使用ui_component-product_listing.xml,那么我认为另一种方法是使用事件观察器。但同样,我也无法通过事件观察器使用任何一种方法来执行此操作。
卡皮尔Karangeeya '16

我尝试使用插件来完成此操作,但未成功。我不知道如何action在大规模行动的子组件中禁用该元素。如果我的研究对您感兴趣,可以稍后将其发布为答案。
Siarhey Uchukhlebau '16

对于事件观测,请检查这个问题 magento.stackexchange.com/questions/148638/...
卡皮尔Karangeeya

@SiarheyUchukhlebau意味着您要从大规模行动下拉列表中删除一个项目。
卡皮尔Karangeeya '16

是的,我试图做到这一点,但是没有成功:(
Siarhey Uchukhlebau

Answers:


1

要基于某些条件向ui网格添加自定义质量动作,可以对massaction ui组件使用自定义类:

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

并实现此类扩展了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
    }
}

或者,您可以反之亦然:)。在您的massaction中指定配置,product_listing.xml如果在您的配置中禁用该操作,则将其从自定义massaction类的配置中删除。

自定义大规模动作的另一种方法是为添加一个插件Magento\Ui\Component\MassAction::prepare


0

您可以在表格XML文件中使用以下XML将批量操作添加到Magento 2管理表格:

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

然后,如果需要,您需要创建自己的控制器和动作类。如何在Magento 2管理网格中添加群众行动?详细说明了如何在Magento 2管理网格中添加大规模操作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.