AttributesList.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Swatches\Model;
  7. use Magento\ConfigurableProduct\Model\AttributesListInterface;
  8. /**
  9. * @api
  10. * @since 100.0.2
  11. */
  12. class AttributesList implements AttributesListInterface
  13. {
  14. /**
  15. * @var \Magento\Catalog\Model\ResourceModel\Product\Attribute\CollectionFactory
  16. */
  17. protected $collectionFactory;
  18. /**
  19. * @var \Magento\Swatches\Helper\Data
  20. */
  21. protected $dataHelper;
  22. /**
  23. * @param \Magento\Catalog\Model\ResourceModel\Product\Attribute\CollectionFactory $collectionFactory
  24. * @param \Magento\Swatches\Helper\Data $dataHelper
  25. */
  26. public function __construct(
  27. \Magento\Catalog\Model\ResourceModel\Product\Attribute\CollectionFactory $collectionFactory,
  28. \Magento\Swatches\Helper\Data $dataHelper
  29. ) {
  30. $this->collectionFactory = $collectionFactory;
  31. $this->dataHelper = $dataHelper;
  32. }
  33. /**
  34. * Retrieve list of attributes
  35. *
  36. * @param array $ids
  37. * @return array
  38. */
  39. public function getAttributes($ids)
  40. {
  41. $collection = $this->collectionFactory->create();
  42. $collection->addFieldToFilter('main_table.attribute_id', $ids);
  43. $attributes = [];
  44. foreach ($collection->getItems() as $attribute) {
  45. $attributes[] = [
  46. 'id' => $attribute->getId(),
  47. 'label' => $attribute->getFrontendLabel(),
  48. 'code' => $attribute->getAttributeCode(),
  49. 'options' => $attribute->getSource()->getAllOptions(false),
  50. 'canCreateOption' => !$this->dataHelper->isSwatchAttribute($attribute),
  51. ];
  52. }
  53. return $attributes;
  54. }
  55. }