我目前正在开发产品配置器。我正在提交一个表单,通过POST将我的自定义属性的admin选项值发送到控制器操作。如果我使用当前商店的属性选项标签,一切正常,产品集合将被正确过滤,并返回与可配置产品相关联的简单产品。 遗憾的是,我使用管理员值来生成表单和URL,因为默认的瑞典商店值包含太多特殊字符。
所以我的问题是:如何在使用admin选项值或更具体的情况下从我的收藏中获取正确的产品,如何获得管理选项值的ID,例如将其用于默认商店&#39 ; s值:
$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;
}