1

As caption, I would like get the product attributes as attribute code like 'Label_x' for example 'Label_Hot', 'Label_Big_Sale' can't create Attributes object with all attribute

I try the code as following:

public function label ($product)
{
$attributes = $product->getAttribute();
        foreach ($attributes as $attribute) { 
           if (stristr($attribute, 'label')==true)   
            {
            ...........logic..........
         }
     }
}
2

Change $product->getAttribute() to $product->getAttributes():

/**
 * Retrieve product attributes
 * if $groupId is null - retrieve all product attributes
 *
 * @param int  $groupId   Retrieve attributes of the specified group
 * @param bool $skipSuper Not used
 * @return \Magento\Eav\Model\Entity\Attribute\AbstractAttribute[]
 * @SuppressWarnings(PHPMD.UnusedFormalParameter)
 */
public function getAttributes($groupId = null, $skipSuper = false)
{
    $productAttributes = $this->getTypeInstance()->getEditableAttributes($this);
    if ($groupId) {
        $attributes = [];
        foreach ($productAttributes as $attribute) {
            if ($attribute->isInGroup($this->getAttributeSetId(), $groupId)) {
                $attributes[] = $attribute;
            }
        }
    } else {
        $attributes = $productAttributes;
    }

    return $attributes;
}

Now you would be able to loop through the attributes and have access to the attribute object. You are able to use $attribute->getCode() to get the code.

  • I want to list only custom attributes of a product in Magento 2, how can I achieve it ?? – Manish Apr 26 '16 at 7:41
1

Custom product attributes with their values:

$custom = []; 
$attributes = $product->getCustomAttributes(); 

foreach ($attributes as $attribute) {  
   $custom[$attribute->getAttributeCode()] = [$attribute->getValue()]; 
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.