Làm thế nào để thêm khối lượng trong lưới sản phẩm trong magento2?


8

Tôi cần thêm hành động hàng loạt dựa trên Cài đặt.

Nếu trong cài đặt Cấu hình, nó được đặt thành "Có / Bật" hơn chỉ nên thêm hành động hàng loạt cụ thể đó vào lưới sản phẩm.

Tôi biết rằng tôi có thể trực tiếp thêm hành động hàng loạt bằng cách sử dụng ui_component product_listing.xml. ? Nhưng trường hợp là làm thế nào để kiểm tra cài đặt cấu hình và thêm hoặc xóa dựa trên đó?


Ngoài ra, nếu không thể với ui_component - product_listing.xml, hơn cách khác tôi nghĩ là làm điều đó với trình quan sát sự kiện. nhưng một lần nữa tôi cũng không thể làm điều đó với người quan sát sự kiện.
Kapil Karangeeya

Tôi đã cố gắng làm điều đó bằng cách sử dụng một plugin, nhưng không thành công. Tôi không biết cách vô hiệu hóa actionphần tử bên trong các thành phần con của hành động hàng loạt. Nếu nghiên cứu của tôi là thú vị cho bạn, tôi có thể đăng nó như một câu trả lời sau.
Siarhey Uchukhlebau

Đối với người quan sát sự kiện, vui lòng kiểm tra câu hỏi này magento.stackexchange.com/questions/148638/ mẹo
Kapil Karangeeya

@SiarheyUchukhlebau Có nghĩa là bạn muốn xóa một mục khỏi trình đơn thả xuống hàng loạt.?
Kapil Karangeeya

Có, tôi đã cố gắng để thực hiện nhưng không thành công :(
Siarhey Uchukhlebau

Câu trả lời:


1

Để 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.xmlvà 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.


0

Bạn có thể thêm các hành động hàng loạt vào lưới quản trị Magento 2 bằng cách sử dụng XML sau trong tệp XML của lưới:

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

Sau đó, bạn cần tạo lớp điều khiển và hành động của riêng bạn nếu cần thiết. Làm cách nào để thêm hành động hàng loạt vào lưới quản trị Magento 2? giải thích chi tiết cách thêm hành động hàng loạt vào lưới quản trị Magento 2 của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.