Проверьте, является ли Общий итог отрицательным


Мне нужно обновить страницу корзины и показать пользовательский блок на случай, если мои общие итоги будут отрицательными.

$grandTotal = Mage::helper('checkout/cart')->getQuote()->getGrandTotal();

Это выводит -$2,269.50, но когда я использую приведенное ниже условие, оно просто не работает.

If ($grandTotal < 0 ){
//do something
}else{
//do something else
}

Как я могу проверить, меньше ли число 0, т.е. отрицательное

Спасибо

Author: Jordan, 2014-08-25

3 answers

Ваша проблема в том, что getGrandTotal возвращает строку, а не число. Попытка увидеть, является ли строка ниже 0, не сработает.

Вы можете отфильтровать строку и удалить все, что не является числом, используя

filter_var($grandTotal, FILTER_SANITIZE_NUMBER_INT);

Который в вашем случае вернул бы -226950 который вы можете затем проверить, ниже ли он 0, если вам нужно выполнить дальнейшие проверки, вам нужно будет разобраться с тем, как он удаляет разделитель между фунтами и пенсами.

if(filter_var($price,FILTER_SANITIZE_NUMBER_INT) < 0) {
    // Do something
} else {
    // Do something else
}
 3
Author: Dave, 2014-08-25 12:21:39

Если вам также нужна точная сумма, вы можете использовать

$currency_sign = "$";
$actual_amount = str_replace($currency_sign,'',$grandTotal); // $grandTotal is -$2,269.50
if($actual_amount < 0) { //$actual_amount will have the value as -2,269.50
    // Do something
} else {
    // Do something else
}

Все, что вам нужно, это использовать правильный знак валюты. Вы можете получить текущий знак валюты с помощью следующего кода:

Mage::app()->getLocale()->currency(Mage::app()->getStore()->getCurrentCurrencyCode())->getSymbol();
 1
Author: MTM, 2014-08-25 13:01:33

Я предлагаю вместо использования

$grandTotal = Mage::helper('checkout/cart')->getQuote()->getGrandTotal();

Пожалуйста, используйте

$quote = Mage::helper('checkout/cart')->getQuote();
$quoteData= $quote->getData();
$grandTotal=$quoteData['grand_total'];

Это дает правильное целочисленное/плавающее значение.

 0
Author: Amit Bera, 2014-08-25 13:24:24