magento2の製品グリッドにMassactionを追加するにはどうすればよいですか?


8

設定に基づいて大量のアクションを追加する必要があります。

構成設定で「はい/有効」に設定されている場合は、その特定の質量アクションのみを製品グリッドに追加する必要があります。

私はui_component product_listing.xmlを使用して大量アクションを直接追加できることを知っています。?しかし、ケースは、構成設定を確認し、それに基づいて追加または削除する方法ですか?


また、ui_component-product_listing.xmlでそれができない場合は、イベントオブザーバーで実行するのとは別の方法だと思います。繰り返しますが、イベントオブザーバーでもどちらの方法でもそれを行うことはできません。
Kapil Karangeeya 2016

プラグインを使用して実行しようとしましたが、失敗しました。actionマスアクションの子コンポーネント内の要素を無効にする方法がわかりません。私の研究があなたにとって興味深い場合は、後で回答として投稿できます。
Siarhey Uchukhlebau 16

イベントオブザーバのために、この質問をチェックしてください magento.stackexchange.com/questions/148638/...
カピルKarangeeya

@SiarheyUchukhlebauアイテムを一括アクションドロップダウンから削除することを意味します。
Kapil Karangeeya 2016

はい、試してみましたが、成功しませんでした:(
Siarhey Uchukhlebau

回答:


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

別の方法として、逆のアプローチを適用することもできます:)。でproduct_listing.xmlアクションの構成を指定し、構成で無効になっている場合は、カスタムマスアクションクラスの構成からアクションを削除します。

一括アクションをカスタマイズする別の方法は、のプラグインを追加することです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管理グリッドに大量のアクションを追加する方法を詳しく説明します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.