2016-09-25 6 views
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> 

ответ

0

модифицировать исходную модель для реализующий

Magento\Framework\Data\OptionSourceInterface 
+0

Не могли бы вы объяснить, пожалуйста, ваше решение с подробным описанием? –

+0

@RahulSharma Я имею в виду этот класс 'xxx \ xxx \ Model \ Entity \ Attribute \ Source \ HeroSlider' необходимо реализовать 'Magento \ Framework \ Data \ OptionSourceInterface' – Joel

+0

Обновите свой ответ тем, что вы упоминали в комментарии, а также следуйте правила публикации для написания хорошо сформированного ответа [здесь] (https://stackoverflow.com/help/how-to-answer). –

Смежные вопросы