В моем примере я должен включить пользовательский атрибут категории только для категории L2 и на другом уровне категории, его следует отключить.
В вашем пользовательском ди. xml файл, добавьте этот код для расширения Magento \ Каталог \ Модель \ Категория \ DataProvider. php
<preference for="Magento\Catalog\Model\Category\DataProvider" type="xyz\abc\Model\Notification\DataProvider" />
После того, как вы сейчас расширите файл 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
Готово