Вопрос

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

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

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

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

Как я могу проверить, будет ли номер менее 0 I.e. Отрицательный

Спасибо

Это было полезно?

Решение

Ваша проблема в том, что 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
}
.

Другие советы

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

$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();
.

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

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

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

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

Он дает правильное значение целочисленного / поплавка.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top