我使用以下代码获取attribute set "size"
的选项ID。
如果我使用大于9的选项标签(即10,12,13,14 ..)
但如果使用小于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。
答案 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;
}
}
}