Magento在产品上调用isInStock()方法的问题

Nic*_*ima 13 php magento

我想检查一些产品是否有库存,但无论我做什么,isInStock()方法总是返回TRUE.我的产品是可配置的产品,没有相关产品,在"库存"选项卡下,"库存可用性"设置为"缺货".我究竟做错了什么?谢谢!

Ala*_*orm 52

Magento目前有很多历史,所以不要总是相信方法名称会做"看起来很明显"的事情,这是一个好主意.几年前,现在显而易见的并不明显.

如果您在Mage_Catalog_Model_Product类上查看以下两个方法

public function isInStock()
{
    return $this->getStatus() == Mage_Catalog_Model_Product_Status::STATUS_ENABLED;
}
public function getStatus()
{
    return $this->_getData('status');
}
Run Code Online (Sandbox Code Playgroud)

您可以看到isInStock检查状态属性,在产品管理员的"常规"部分中设置.

试试这个

$stockItem = $product->getStockItem();
if($stockItem->getIsInStock())
{
    //in stock!
}
else
{
    //not in stock!
}
Run Code Online (Sandbox Code Playgroud)