0
Я попытался создать атрибут настраиваемой категории с настраиваемым классом источника, но для выбора ввода нет параметров. Я не знаю, почему, я что-то упускаю. Я проверял и атрибут существует в базе данных. Спасибо за помощь.Атрибут атрибута Magento 2
UpgradeData.php
if (version_compare($context->getVersion(), '0.1.3') < 0) {
$categorySetup = $this->eavSetupFactory->create(['setup' => $setup]);
$categorySetup->addAttribute(Category::ENTITY, 'category_heroslider', [
'type' => 'int',
'label' => 'Category Hero Slider',
'input' => 'select',
'source' => xxx\xxx\Model\Entity\Attribute\Source\HeroSlider::class,
'required' => false,
'sort_order' => 100,
'global' => ScopedAttributeInterface::SCOPE_STORE,
'group' => 'General Information',
'user_defined' => true,
'visible' => true,
]);
}
класс источник
namespace xxx\xxx\Model\Entity\Attribute\Source;
use Magento\Eav\Model\Entity\Attribute\Source\AbstractSource;
class xxx extends AbstractSource
{
/**
* @var \xxx\xxx\Model\ResourceModel\Slider\CollectionFactory
*/
private $slidersCollection;
/**
* HeroSlider constructor.
* @param \xxx\xxxx\Model\ResourceModel\Slider\CollectionFactory $slidersCollection
*/
public function __construct(\xxx\xxx\Model\ResourceModel\Slider\CollectionFactory $slidersCollection)
{
$this->slidersCollection = $slidersCollection;
}
public function getAllOptions()
{
$this->_options = [
['label' => __('Yes'), 'value' => 1],
['label' => __('asd'), 'value' => 2],
];
return $this->_options;
}
public function toOptionArray()
{
return [1 => 'test'];
}
}
category_form.xml
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
<fieldset name="general">
<field name="category_heroslider">
<argument name="data" xsi:type="array">
<item name="options" xsi:type="object">xxx\xxx\Model\Entity\Attribute\Source\HeroSlider</item>
<item name="config" xsi:type="array">
<item name="sortOrder" xsi:type="number">100</item>
<item name="dataType" xsi:type="string">int</item>
<item name="formElement" xsi:type="string">select</item>
<item name="label" xsi:type="string" translate="true">Category Hero Slider</item>
</item>
</argument>
</field>
</fieldset>
Не могли бы вы объяснить, пожалуйста, ваше решение с подробным описанием? –
@RahulSharma Я имею в виду этот класс 'xxx \ xxx \ Model \ Entity \ Attribute \ Source \ HeroSlider' необходимо реализовать 'Magento \ Framework \ Data \ OptionSourceInterface' – Joel
Обновите свой ответ тем, что вы упоминали в комментарии, а также следуйте правила публикации для написания хорошо сформированного ответа [здесь] (https://stackoverflow.com/help/how-to-answer). –