Esempio n. 1
0
 /**
  * Retrieve Option values array by ids
  *
  * @param string|array $ids
  * @param bool $withEmpty Add empty option to array
  * @return array
  */
 public function getSpecificOptions($ids, $withEmpty = true)
 {
     $options = $this->_attrOptionCollectionFactory->create()->setPositionOrder('asc')->setAttributeFilter($this->getAttribute()->getId())->addFieldToFilter('main_table.option_id', ['in' => $ids])->setStoreFilter($this->getAttribute()->getStoreId())->load()->toOptionArray();
     if ($withEmpty) {
         array_unshift($options, ['label' => '', 'value' => '']);
     }
     return $options;
 }
Esempio n. 2
0
 /**
  * Retrieve attribute option values for given store id
  *
  * @param int $storeId
  * @return array
  */
 public function getStoreOptionValues($storeId)
 {
     $values = $this->getData('store_option_values_' . $storeId);
     if ($values === null) {
         $values = [];
         $valuesCollection = $this->_attrOptionCollectionFactory->create()->setAttributeFilter($this->getAttributeObject()->getId())->setStoreFilter($storeId, false)->load();
         foreach ($valuesCollection as $item) {
             $values[$item->getId()] = $item->getValue();
         }
         $this->setData('store_option_values_' . $storeId, $values);
     }
     return $values;
 }
Esempio n. 3
0
 /**
  * @param \Magento\Catalog\Model\ResourceModel\Eav\Attribute $attribute
  * @param array $data
  * @return array
  */
 protected function getOption($attribute, $data)
 {
     $result = [];
     $data['option'] = explode("\n", $data['option']);
     /** @var \Magento\Eav\Model\ResourceModel\Entity\Attribute\Option\Collection $options */
     $options = $this->attrOptionCollectionFactory->create()->setAttributeFilter($attribute->getId())->setPositionOrder('asc', true)->load();
     foreach ($data['option'] as $value) {
         if (!$options->getItemByColumnValue('value', $value)) {
             $result[] = $value;
         }
     }
     return $result ? $this->convertOption($result) : $result;
 }
Esempio n. 4
0
 /**
  * Loads all attributes with options for attribute
  *
  * @param string $attributeCode
  * @return $this
  */
 protected function loadAttributeOptions($attributeCode)
 {
     /** @var \Magento\Catalog\Model\ResourceModel\Product\Attribute\Collection $collection */
     $collection = $this->attributeCollectionFactory->create();
     $collection->addFieldToSelect(['attribute_code', 'attribute_id']);
     $collection->addFieldToFilter('attribute_code', $attributeCode);
     $collection->setFrontendInputTypeFilter(['in' => ['select', 'multiselect']]);
     foreach ($collection as $item) {
         $options = $this->attrOptionCollectionFactory->create()->setAttributeFilter($item->getAttributeId())->setPositionOrder('asc', true)->load();
         $this->attributeCodeOptionsPair[$item->getAttributeCode()] = $options;
     }
     return $this;
 }
Esempio n. 5
0
 /**
  * @dataProvider getOptionTextProvider
  * @param array $optionsIds
  * @param array|string $value
  * @param array $options
  * @param array|string $expectedResult
  */
 public function testGetOptionText($optionsIds, $value, $options, $expectedResult)
 {
     $attributeId = 1;
     $storeId = 5;
     $attribute = $this->getMock('Magento\\Eav\\Model\\Entity\\Attribute\\AbstractAttribute', ['getId', 'getStoreId', '__wakeup'], [], '', false);
     $attribute->expects($this->once())->method('getId')->willReturn($attributeId);
     $attribute->expects($this->once())->method('getStoreId')->willReturn($storeId);
     $this->model->setAttribute($attribute);
     $this->collectionFactory->expects($this->once())->method('create')->willReturnSelf();
     $this->collectionFactory->expects($this->once())->method('setPositionOrder')->willReturnSelf();
     $this->collectionFactory->expects($this->once())->method('setAttributeFilter')->with($attributeId)->willReturnSelf();
     $this->collectionFactory->expects($this->once())->method('addFieldToFilter')->with('main_table.option_id', ['in' => $optionsIds])->willReturnSelf();
     $this->collectionFactory->expects($this->once())->method('setStoreFilter')->with($storeId)->willReturnSelf();
     $this->collectionFactory->expects($this->once())->method('load')->willReturnSelf();
     $this->collectionFactory->expects($this->once())->method('toOptionArray')->willReturn($options);
     $this->assertEquals($expectedResult, $this->model->getOptionText($value));
 }
Esempio n. 6
0
 /**
  * @param $attributeId
  * @return void
  */
 private function loadOptionCollection($attributeId)
 {
     if (empty($this->optionCollection[$attributeId])) {
         $this->optionCollection[$attributeId] = $this->attrOptionCollectionFactory->create()->setAttributeFilter($attributeId)->setPositionOrder('asc', true)->load();
     }
 }