magento getOptionId不适用于某些标签

时间:2016-12-23 08:24:08

标签: php magento

我使用以下代码获取attribute set "size"的选项ID。 如果我使用大于9的选项标签(即10,12,13,14 ..)

,它返回正确的id

但如果使用小于10的选项标签(即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);
}

示例:

  

当我使用选项标签($ attribute_label = 13)作为13时的输出   返回5.

     

当我使用选项标签($ attribute_label = 6)时返回6   6。

1 个答案:

答案 0 :(得分:0)

这是因为getOptionId()与数字标签不兼容,正如此问题中所述:https://magento.stackexchange.com/questions/128445/getoptionid-method-returns-invalid-option-id

您可以做的是避免使用此方法并调整代码:

$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;
        }
    }
}