Проблема с Magento при вызове метода isInStock () для продукта - PullRequest
13 голосов
/ 23 апреля 2010

Я хочу проверить, есть ли на складе какие-то продукты, но что бы я ни делал, метод isInStock() всегда возвращает TRUE. Мои продукты являются настраиваемыми продуктами без сопутствующих товаров, и на вкладке «Инвентаризация» для параметра «Доступность на складе» установлено значение «Нет на складе». Что я делаю неправильно? Спасибо!

Ответы [ 3 ]

52 голосов
/ 24 апреля 2010

На данный момент у 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');
}

Как видите, isInStock проверяет атрибут status , установленный в разделе «Общие» администратора продукта.

Попробуйте вместо этого

$stockItem = $product->getStockItem();
if($stockItem->getIsInStock())
{
    //in stock!
}
else
{
    //not in stock!
}
0 голосов
/ 30 июля 2013
<?php if ((int) Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getQty()>0) { ?>

 <?php  } else {} ?>

Работает для простого представления категории продукта.

0 голосов
/ 03 марта 2013
$qtyStock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getQty();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...