Magento 2 Как отключить атрибут категории при условии? - PullRequest
0 голосов
/ 24 апреля 2020

Magento 2 Как отключить атрибут категории на основе условия.

В моем примере

Я должен включить атрибут категории только для категории L2 и для другой категории, он должен быть отключенным.

1 Ответ

1 голос
/ 24 апреля 2020

В моем примере я должен включить пользовательский атрибут категории только для категории L2 и на другом уровне категории, его следует отключить.

  1. В вашем пользовательском ди. xml файл, добавьте этот код для расширения Magento \ Каталог \ Модель \ Категория \ DataProvider. php

    <preference for="Magento\Catalog\Model\Category\DataProvider" type="xyz\abc\Model\Notification\DataProvider" />

  2. После того, как вы сейчас расширите файл Magento\Catalog\Model\Category\DataProvider.php создайте файл xyz\abc\Model\Notification\DataProvider.php в своем пользовательском модуле, в котором мы вызываем функцию getData() для

`

public function getData() {    
           if (isset($this->loadedData)) {    
            return $this->loadedData;    
        }
        $category = $this->getCurrentCategory();

        if ($category) {
            $categoryLevel = $category->getLevel();
            $categoryData = $category->getData();
            $categoryData = $this->addUseConfigSettings($categoryData);
            $categoryData = $this->filterFields($categoryData);
            $categoryData = $this->convertValues($category, $categoryData);

            $this->loadedData[$category->getId()] = $categoryData;
//Customization Started
            if( $categoryLevel == 2 )  
                $this->loadedData[$category->getId()]['do_we_hide_it'] = false;
            else
                $this->loadedData[$category->getId()]['do_we_hide_it'] = true;
//Customization ended
        }
        return $this->loadedData;
}

`

In В приведенном выше коде я выполнил настройку, чтобы получить значение флага (do_we_hide_it), чтобы мы могли использовать этот флаг в нашей форме категории. xml, чтобы включить / отключить атрибут категории.

Примечание. Скопируйте функцию convertValues ​​($ category, $ categoryData) из Magento\Catalog\Model\Category\DataProvider.php в xyz\abc\Model\Notification\DataProvider.php, поскольку эта функция является закрытой, поэтому не может расширять функцию.

Так что теперь go на вашем category_form.xml (path: xyz/abx/view/adminhtml/ui_component/category_form.xml) и добавьте этот код в атрибут пользовательской категории.

`

<field name="your_custom_attibute_name">
    <argument name="data" xsi:type="array">
       ........
    </argument>
<!-- Customization Started -->
    <settings>
        <imports>
            <link name="disabled">${ $.provider}:data.do_we_hide_it</link>
        </imports>
    </settings>
<!-- Customization ended -->
</field>

`

php кэш bin / magento: грипп sh

Готово

...