我在循环遍历子产品并尝试返回其当前库存数量和子产品名称的扩展中遇到了这段代码:

<?php foreach ($this->getChildProducts() as $childProduct) : ?>
        <?php $childProductStockQty = $this-> getProductStockQty($childProduct);?>
        <?php if ($childProductStockQty > 0) : ?>
            <tr>
                <td><?php echo $childProduct->getName() ?></td>
                <td class="a-center"><?php echo $childProductStockQty ?></td>
            </tr>
        <?php endif ?>
    <?php endforeach ?>

CE 1.9.0.1 这工作得很好,按预期返回了产品名称和库存数量。在 CE 1.9.1, ,它将返回正确的库存数量,但名称返回 null。

我的问题并不是“这个扩展有什么问题?”,我也向开发人员发送了一个问题。我想知道你们是否知道是否有变化 CE 1.9.1 如何检索子产品名称。

向下阅读代码 Mage/CatalogInventory/Block/Stockqty 兔子洞还没有发出任何我能察觉到的光。

任何和所有的建议都值得赞赏。

有帮助吗?

解决方案

有趣的是 name 返回 null。寻找最终的代码 getUsedProducts 那应该 Retrieve array of "subproducts" 并返回产品集合。

在比较本地存储库从 1.9.0.1 到 1.9.1 时,我没有看到任何变化,所以它有点神秘。更奇怪的是,您被退回库存,但名称为空。两者都应该出现在模型中,因为它们是必填字段。也许该模块对影响核心行为的集合进行了一些额外的修改。

但还是要回答一下问题。我看不出这两个版本之间有什么变化。

其他提示

我用这一行解决了这个

<?php $childProduct = Mage::getModel('catalog/product')->load($childProduct->getId()); ?>
.

所以我得到了所有的孩子的信息,现在getname得到了我们的期望。

我希望这有帮助!不是最好的方法,而是有效。

首先,循环中是否有有效的产品对象?IE。是 $childProduct->getId() 重新调整 ID 或 null?如果是这样,则升级时出现了某些问题。请注意 $this->getProductStockQty()$childProduct->getName()不是 同样的方法。因此,他们不一定必须共同努力或共同失败。

其次,您需要检查相应块的 getChildProducts() 方法。从那里,您可以追踪集合是如何组合在一起的。这可能是因为该集合(无论出于何种原因升级后)不包括 name 其领域中的 addAttributeToFilter() 筛选。

许可以下: CC-BY-SA归因
scroll top