Xóa cột khỏi lưới Đặt hàng dựa trên điều kiện


7

Tôi muốn xóa statuscột khỏi lưới đặt hàng bảng điều khiển quản trị Magento.

Tôi sử dụng mã dưới đây để loại bỏ statuscột trong sales_order_grid.xmltập tin của tôi . Tài liệu tham khảo

<listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
    <columns name="sales_order_columns">
        <column name="status">
            <argument name="data" xsi:type="array">
                <item name="config" xsi:type="array">
                    <item name="componentDisabled" xsi:type="boolean">true</item>
                </item>
            </argument>
        </column>
    </columns>
</listing>

Nó xóa statuscột thành công nhưng tôi muốn xóa nó dựa trên một điều kiện, giá trị của trường cấu hình khỏi Stores > Configurationphần.

Có cách nào tôi có thể thêm một điều kiện trên componentDisabled, hoặc bất kỳ cách nào khác để đạt được yêu cầu của tôi không?

Câu trả lời:


6

Nó có thể hữu ích cho bạn.

<listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
    <columns name="sales_order_columns">
        <column name="websites" class="Magento\Catalog\Ui\Component\Listing\Columns\Websites" sortOrder="100">
            <settings>
                <addField>true</addField>
                <options class="Magento\Store\Model\ResourceModel\Website\Collection"/>
                <dataType>text</dataType>
                <label translate="true">Websites</label>
            </settings>
        </column>
    </columns>
</listing>

Trang web.php

<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
namespace Magento\Catalog\Ui\Component\Listing\Columns;

use Magento\Framework\View\Element\UiComponentFactory;
use Magento\Framework\View\Element\UiComponent\ContextInterface;
use Magento\Store\Model\StoreManagerInterface;

/**
 * @api
 * @since 100.0.2
 */
class Websites extends \Magento\Ui\Component\Listing\Columns\Column
{
    /**
     * Column name
     */
    const NAME = 'websites';

    /**
     * Store manager
     *
     * @var StoreManagerInterface
     */
    protected $storeManager;

    /**
     * @param ContextInterface $context
     * @param UiComponentFactory $uiComponentFactory
     * @param StoreManagerInterface $storeManager
     * @param array $components
     * @param array $data
     */
    public function __construct(
        ContextInterface $context,
        UiComponentFactory $uiComponentFactory,
        StoreManagerInterface $storeManager,
        array $components = [],
        array $data = []
    ) {
        parent::__construct($context, $uiComponentFactory, $components, $data);
        $this->storeManager = $storeManager;
    }

    /**
     * {@inheritdoc}
     * @deprecated 101.0.0
     */
    public function prepareDataSource(array $dataSource)
    {
        $websiteNames = [];
        foreach ($this->getData('options') as $website) {
            $websiteNames[$website->getWebsiteId()] = $website->getName();
        }
        if (isset($dataSource['data']['items'])) {
            $fieldName = $this->getData('name');
            foreach ($dataSource['data']['items'] as & $item) {
                $websites = [];
                foreach ($item[$fieldName] as $websiteId) {
                    if (!isset($websiteNames[$websiteId])) {
                        continue;
                    }
                    $websites[] = $websiteNames[$websiteId];
                }
                $item[$fieldName] = implode(', ', $websites);
            }
        }

        return $dataSource;
    }

    /**
     * Prepare component configuration
     * @return void
     */
    public function prepare()
    {
        parent::prepare();
        if ($this->storeManager->isSingleStoreMode()) {
            $this->_data['config']['componentDisabled'] = true;
        }
    }
}

Đó là Magento xác thực được sử dụng để hiển thị trang web dựa trên điều kiện.


Cảm ơn Dharmendra cho câu trả lời. Tôi sẽ cố gắng thực hiện nó với mã của tôi.
Jaimin Sutariya

Chào mừng bạn bất cứ lúc nào.
Dharmendra Jadav

@DharmendraJadav Chúng tôi có thể ẩn cơ sở cột trên quản trị viên đã đăng nhập NGƯỜI DÙNG không? Tôi muốn ẩn một số cột khỏi lưới quản trị bằng Thành phần UI. Muốn hiển thị một số cột cho một số người dùng và phần còn lại của người dùng có thể xem tất cả các cột
Kartik Asodariya

@Kartik chúng ta cần kiểm tra xem. bởi vì tôi đã không kiểm tra điều đó trước đây Nhưng vâng, chúng tôi có thể làm điều đó. Không phải là không thể
Dharmendra Jadav

@DharmendraJadav bạn có thể vui lòng gửi ở đây vì vậy sẽ giúp tôi cũng như những người khác. Những nỗ lực của bạn sẽ được đánh giá cao.
Kartik Asodariya
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.