Pergunta

Eu preciso atualizar a página do carrinho, e mostrar um bloco personalizado no caso do meu Totais é Negativo.

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

Esta função imprime -$2,269.50, mas quando eu uso o abaixo condição, ele simplesmente não funcionam.

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

Como posso verificar se o número for menor do que 0, i.e.negativo

Obrigado

Foi útil?

Solução

O problema é que getGrandTotal é retornar uma seqüência de caracteres em vez de um número.Tentando ver se uma seqüência de caracteres for menor que 0 não vai funcionar.

Você pode filtrar o string e remova qualquer coisa que não é um número usando

filter_var($grandTotal, FILTER_SANITIZE_NUMBER_INT);

Que no seu caso seria o retorno -226950 o que você pode, em seguida, verifique se ele é menor do que 0, se você precisa fazer novas verificações, você vai precisar para lidar com a maneira como ele remove a separação entre a libras e pence.

if(filter_var($price,FILTER_SANITIZE_NUMBER_INT) < 0) {
    // Do something
} else {
    // Do something else
}

Outras dicas

Se você deseja que a quantidade exata bem, você pode usar

$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
}

tudo que você precisa é usar a moeda correta sinal.Você pode obter o atual sinal de moeda pelo seguinte código:

Mage::app()->getLocale()->currency(Mage::app()->getStore()->getCurrentCurrencyCode())->getSymbol();

eu sugiro que em vez de usar

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

por favor, use

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

ele dar o devido inteiro/float valor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top