2016-12-23 3 views
0

Ich verwende den folgenden Code, um die Option ID für attribute set "size" zu erhalten. Es gibt die richtige ID zurück, wenn ich die Optionsbeschriftung größer als 9 (dh 10,12,13,14 ..)magento getOptionId funktioniert nicht für einige Etiketten

Aber funktioniert nicht, wenn Option Label verwenden weniger als 10 (dh 5,6,7 , 8,9).

$attr = 'size'; 
$attribute_label = 13; 
$_product = Mage::getModel('catalog/product'); 
$attribute_name = $_product->getResource()->getAttribute($attribute_name); 

if ($attr->usesSource()) { 
    echo $color_id = $attribute_name->getSource()- >getOptionId($attribute_label); 
} 

Beispiel:

Ausgabe, wenn ich Option Label ($ attribute_label = 13) als 13 es kehrt 5.

Ausgabe, wenn ich Option Label ($ attribute_label = 6) 6 kehrt 6.

+0

können Sie unten versuchen post http://magentorex.com/magento-get-product-attributes-option-id-from-option-label/ –

Antwort

0

Dies geschieht, weil get OptionID() funktioniert nicht gut mit numerischen Etiketten, wie sie in dieser Frage auch angegeben: https://magento.stackexchange.com/questions/128445/getoptionid-method-returns-invalid-option-id

Was können Sie tun, ist mit dieser Methode zu vermeiden und Ihr Code etwas einstellen wie:

$attribute_name = 'size'; 
$attribute_label = 13; 
$optionId = false; 
$attr = Mage::getResourceModel('catalog/product')->getAttribute($attribute_name); 
if ($attr->usesSource()) { 
    $options = $attr->getSource()->getAllOptions(); 
    foreach($options as $option) { 
     if($option['label'] == $attribute_label) { 
      $optionId = $option['value']; 
      break; 
     } 
    } 
} 
Verwandte Themen