我目前正在开发产品配置器 . 我正在提交一个表单,通过POST将我的自定义属性的admin选项值发送到控制器操作 . 如果我使用当前商店的属性选项标签,一切正常,产品集合将被正确过滤,并返回与可配置产品相关联的简单产品 . 遗憾的是,我使用管理员值来生成表单和URL,因为默认的瑞典商店值包含太多特殊字符 .
所以我的问题是:在使用admin选项值或更具体时,如何从我的集合中获取正确的产品,如何获取admin选项值的ID,例如使用此值作为默认商店的值:
$id = Mage::getResourceModel('catalog/product')
->getAttribute($key)
->getSource()
->getOptionId($value);
我已经尝试过按addStoreFilter(0)进行过滤,但这也不起作用 . 我已经读过它可能与默认存储中使用的平面表有关,但不适用于管理员,但我对Magento没有经验,所以我真的不明白使用平面表的区别以及它的真正含义 .
以下是关于过滤参考的最后一个问题:Magento - addFieldToFilter doesn't choose the right product
这是我的getProduct()函数:
public function getProduct($attributes)
{
Mage::Log($attributes);
$productModel = Mage::getModel('catalog/product');
//Get Product Collection
$collection = $productModel->getCollection()
//Filter for Selected Product
$collection->addAttributeToSelect('status');
$collection->addAttributeToSelect('doorconfig_enable');
$collection->addAttributeToFilter('doorconfig_enable',array('eq' => 1));
foreach ($attributes as $key => $value)
{
$collection->addAttributeToSelect($key);
$id = Mage::getResourceModel('catalog/product')
->getAttribute($key)
->getSource()
->getOptionId($value);
$collection->addAttributeToFilter($key,
array(
'eq' => $id
)
);
}
$selection = $collection->getSelect()->__toString();
Mage::Log($selection);
Mage::log($collection->getSize(),null,'custom.log');
$product = $collection->getFirstItem();
return $product;
}