Como obter o atributo "rótulo da opção / texto do atributo" com "valor do atributo" (option_id)?

18

Suponha que eu tenha um atributo que seja uma coleção de opções (lista suspensa / seleção múltipla).

Eu posso recuperar o valor do atributo para um determinado produto:

$store_id = [something];
$productId = [something];
// this is a select/multiselect
$attribute_code = [something]; 

$option_id = Mage::getResourceModel('catalog/product')->getAttributeRawValue($productId, $attribute_code, $store_id );
$option_label = ???

Agora, eu tenho o atributo option_id, que é um valor numérico ...

... Qual é a melhor maneira de carregar o rótulo de atributo de front-end para o meu valor de atributo? (sem carregar o produto completo)

Solução graças Marius :

// Not loading the product - just creating a simple instance
$product = Mage::getModel('catalog/product')
->setStoreId($store_id)
->setData($attribute_code,$option_id); 
$option_label = $product->getAttributeText($attribute_code);
Fra
fonte
2
Por que essa pergunta é dada várias vezes pelo autor exato e todos eles confundem usuários. Podemos marcar como duplicado como essas perguntas sem respostas corretas? Esta questão magento.stackexchange.com/questions/3003 dada pelo autor não possui respostas corretas, mas por que votações positivas (e respostas próprias)! Este magento.stackexchange.com/questions/976 também é o mesmo. Talvez meu pedido não esteja certo, mas uma pergunta, um autor e nenhuma resposta. Por favor, mantenha a qualidade do site. Obrigado.
mageUz
Eu melhorei a outra questão adicionando a solução @Marius magento.stackexchange.com/questions/3003/…
Fra
11
Note-se que, pelo menos em Magento CE 1.9 e EE 1.14 e abaixo, getAttributeText('value')não funciona corretamente se o atributo de getAllOptions()opções de método retorna combinado com matrizes aninhadas, (expressos como uma <optgroup>na lista suspensa.)
Tyler V.

Respostas:

49

Além do seu código, coloque isso:

$product = Mage::getModel('catalog/product')
                ->setStoreId($store_id)
                ->setBrand($brand_value); // not loading the product - just creating a simple instance
$brandLabel = $product->getAttributeText('brand');
Marius
fonte
9
$attribute = Mage::getModel('catalog/resource_eav_attribute')
            ->loadByCode(Mage_Catalog_Model_Product::ENTITY, 'manufacturer');
$label     = $attribute->getFrontendLabel();
mageUz
fonte
11
Confuso quanto ao "rótulo do atributo de front-end", corrija a pergunta. Não "rótulo atributo", isto é "etiqueta opção" ou "texto do atributo"
mageUz