Làm cách nào để xóa tùy chọn Xóa khỏi thả xuống hàng loạt cho vai trò người dùng cụ thể trong Magento2?


8

Tôi có vai trò người dùng khác nhau cho trang web của tôi. Đối với vai trò người dùng cụ thể, tôi muốn xóa "Xóa" khỏi danh sách hành động hàng loạt hiển thị trên lưới khách hàng trong phần quản trị.

Tùy chọn Xóa được kết xuất từ

magento\vendor\magento\module-customer\view\adminhtml\ui_component\customer_listing.xml file.

Tôi muốn hiển thị tùy chọn Xóa này chỉ cho người dùng vai trò1 và muốn ẩn cho người dùng vai trò 2.

Làm thế nào chúng ta có thể làm điều này?

Câu trả lời:


8

Điều này có thể được thực hiện bằng cách tạo một lớp mới cho MassActions:

<?php
namespace YourVendor\YourModule\Ui;

class MassAction extends \Magento\Ui\Component\MassAction
{
    private $authorization;

    public function __construct(
        \Magento\Framework\View\Element\UiComponent\ContextInterface $context,
        \Magento\Framework\AuthorizationInterface $authorization,
        $components,
        array $data
    ) {
        $this->authorization = $authorization;
        parent::__construct($context, $components, $data);
    }

    public function prepare()
    {
        parent::prepare();
        $config = $this->getConfiguration();
        if (!$this->authorization->isAllowed('YourVendor_YourModule::the_acl_youd_like_to_use')) {
            $allowedActions = [];
            foreach ($config['actions'] as $action) {
                if ('delete' != $action['type']) {
                    $allowedActions[] = $action;
                }
            }
            $config['actions'] = $allowedActions;
        }
        $this->setData('config', (array)$config);
    }
}

Thêm cài đặt nó vào danh sách khách hàng với sự trợ giúp của app/code/YourVendor/YourModule/view/adminhtml/ui_component/customer_listing.xmltệp:

<?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="YourVendor\YourModule\Ui\MassAction"/>
    </listingToolbar>
</listing>

Nó hoạt động với tôi
SCC

Hoạt động trong CE 2.3.1
Garry

0

Bạn có thể thực hiện bằng cách sử dụng plugin ( Cách tiếp cận tốt nhất ):

ứng dụng / mã / Devcrew / DeleteRestriction / etc / adminhtml / di.xml

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="Magento\Catalog\Ui\Component\Product\MassAction">
        <plugin name="hide_delete_from_catalog_massaction" type="Devcrew\DeleteRestriction\Plugin\Catalog\Ui\Component\Product\MassAction" sortOrder="1"/>
    </type>
</config>

ứng dụng / mã / Devcrew / DeleteRestriction / Plugin / Catalog / Ui / Thành phần / Sản phẩm / MassAction.php

<?php
namespace Devcrew\DeleteRestriction\Plugin\Catalog\Ui\Component\Product;
class MassAction
{
    public function __construct(  \Magento\Backend\Model\Auth\Session $adminSession)
    {
        $this->_adminSession = $adminSession;
    }
    public function afterIsActionAllowed(

        \Magento\Catalog\Ui\Component\Product\MassAction $subject,
        $isAllowed,
        $actionType
    ) {
        $roleData = $this->_adminSession->getUser()->getRole()->getData();

         //Remove Delete Button for Admin users except Administrators
        if ($actionType == 'delete' && trim($roleData['role_name'])!=='Administrators') {
            return false;
        }

        return $isAllowed;
    }
}
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.