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 Answers 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– Manish2016年04月26日 07:41:02 +00:00Commented Apr 26, 2016 at 7:41
Custom product attributes with their values:
$custom = [];
$attributes = $product->getCustomAttributes();
foreach ($attributes as $attribute) {
$custom[$attribute->getAttributeCode()] = [$attribute->getValue()];
}