Domanda

Ho bisogno di aggiornare la pagina del carrello e mostrare un blocco personalizzato nel caso in cui i miei grandi totali siano negativi.

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

Stampa -$2,269.50, ma quando uso la condizione inferiore, non funziona.

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

Come posso controllare se il numero è inferiore a 0 I.e. Negativo

Grazie

È stato utile?

Soluzione

Il tuo problema è che GetGrandTotal restituisce una stringa piuttosto un numero.Cercando di vedere se una stringa è inferiore, 0 non funzionerà.

È possibile filtrare la stringa e rimuovere qualsiasi cosa che non sia un numero usando

filter_var($grandTotal, FILTER_SANITIZE_NUMBER_INT);
.

che nel tuo caso ritornerebbe -226950 che è possibile verificare se è inferiore a 0, se è necessario eseguire ulteriori controlli dovrai gestire il modo in cui rimuove il separatore tra ilsterline e pence.

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

Altri suggerimenti

Se si desidera anche l'importo esatto, è possibile utilizzare

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

Tutto ciò che serve è usare il segno di valuta corretto.È possibile ottenere il segno corrente corrente dal seguente codice:

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

lo suggerisco Invece di usare

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

Si prega di utilizzare

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

Dà un valore intero / valore float appropriato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top