我目前正在开发产品配置器 . 我正在提交一个表单,通过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;

    }