Magento 2는 제품 ID없이 모든 제품 속성을 얻습니다.


12

사용 가능한 모든 제품 속성검색 한 다음 선택 옵션 필드의 이름 및 값으로 변환하려고합니다. Magento 1에서는 다음과 같이 달성 할 수 있습니다.

public function getMagentoAttributes()
{
    $values[] = array(
        'value' => '',
        'label' => 'Pick Product Attribute'
    );

    $categories = Mage::getResourceModel('catalog/product_attribute_collection')->getItems();

    foreach ($categories as $category) {
        if ($category->getFrontendLabel() != '') {
            $label = $category->getFrontendLabel();
        } else {
            $label = $category->getAttributecode();
        }

        $values[] = array(
            'value' => $category->getAttributecode(),
            'label' => $label
        );
    }
    return $values;
}

magento 2에서 동일한 작업을 수행하는 방법이 있습니까?


"RonakChauhan"에 따라 코드를 사용했지만 블록 파일에서 제대로 작동하지만 가시성에 따라 속성을 필터링 할 수 없다는 문제가 있습니다. 즉, "visible = visible"속성이 필요한 속성이 필요합니다. > yes "Admin ... Any 도움을받을 것입니다 ... 여기 Product Attribute의 콜렉션 클래스를 가져 오는 코드가 있습니다. ProductList extends \ Magento \ Framework \ View \ Element \ Template {protected $ _attributeFactory; 공용 함수 __construct (\ Magento \ Catalog \ Model \ ResourceModel \ Eav \ Attribute $ attributeFactory) {parent :: __ construct ($ context); $
this-

답변:


10
protected $_attributeFactory;

 public function __construct(
    ....
    \Magento\Catalog\Model\ResourceModel\Eav\Attribute $attributeFactory,
    ....
) {
    ....
    $this->_attributeFactory = $attributeFactory;
    ....
}

public function <func_name>()
{
    $attributeInfo = $this->_attributeFactory->getCollection();

   foreach($attributeInfo as $attributes)
   {
        $attributeId = $attributes->getAttributeId();
        // You can get all fields of attribute here
   }
}

여기서 전체 속성 모음을 가질 수 있으며 필요에 따라 필터링 할 수 있습니다.


속성 이름과 ID를 얻는 방법?
단순한 남자

사용 foreach당신이 얻을 수 getAttributeId()뿐만 아니라getAttributeName()
Ronak 차우

업데이트 된 답변 확인
Ronak Chauhan

getAttributeName 인쇄 공백
단순한 사람

1
echo "<pre>"; print_r($attributes);exit;이것을 foreach와 check에 사용
Ronak Chauhan

8

또 다른 아이디어는 Service Contracts Layer로 시도해야한다는 것 입니다.

Magento\Eav\Api\AttributeRepositoryInterfaceeav 속성을 얻는 데 사용하십시오 .

여기에 이미 답변이 있습니다 : /magento//a/161426/33057

예를 들면 다음과 같습니다.

    $searchCriteria = $this->searchCriteriaBuilder->create();
    $attributeRepository = $this->attributeRepository->getList(
        'catalog_product',
        $searchCriteria
    );

    foreach ($attributeRepository->getItems() as $items) {
        $items->getAttributeCode();
        $items->getFrontendLabel();
    }

참고 :getList 메소드 의 엔티티 유형 코드 는 eav_entity_type표 에서 찾을 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.