Проблема с Magento при вызове метода isInStock () для продукта

Функция:

public float simpleSimilarity(String u, String v) {
    String[] a = u.split(" ");
    String[] b = v.split(" ");

    long correct = 0;
    int minLen = Math.min(a.length, b.length);

    for (int i = 0; i < minLen; i++) {
        String aa = a[i];
        String bb = b[i];
        int minWordLength = Math.min(aa.length(), bb.length());

        for (int j = 0; j < minWordLength; j++) {
            if (aa.charAt(j) == bb.charAt(j)) {
                correct++;
            }
        }
    }

    return (float) (((double) correct) / Math.max(u.length(), v.length()));
}

Тест:

String a = "This is the first string.";

String b = "this is not 1st string!";

// for exact string comparison, use .equals

boolean exact = a.equals(b);

// For similarity check, there are libraries for this
// Here I'll try a simple example I wrote

float similarity = simple_similarity(a,b);
13
задан Valery Viktorovsky 20 August 2015 в 21:36
поделиться

1 ответ

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!
}
52
ответ дан 1 December 2019 в 17:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: