Vérifiez si le grand total est négatif
-
12-12-2019 - |
Question
Je dois actualiser la page du panier et afficher un bloc personnalisé au cas où mes totaux généraux seraient négatifs.
$grandTotal = Mage::helper('checkout/cart')->getQuote()->getGrandTotal();
Ceci imprime -$2,269.50
, mais lorsque j'utilise la condition ci-dessous, cela ne fonctionne tout simplement pas.
If ($grandTotal < 0 ){
//do something
}else{
//do something else
}
Comment puis-je vérifier si le nombre est inférieur à 0, c'est-à-direnégatif
Merci
La solution
Votre problème est que GetGrandTotal renvoie plutôt une chaîne plutôt qu'un numéro.Essayer de voir si une chaîne est plus basse, alors 0 ne va pas fonctionner.
Vous pouvez filtrer la chaîne et supprimer tout ce qui n'est pas un numéro en utilisant
filter_var($grandTotal, FILTER_SANITIZE_NUMBER_INT);
qui dans votre cas revenir if(filter_var($price,FILTER_SANITIZE_NUMBER_INT) < 0) {
// Do something
} else {
// Do something else
}
Autres conseils
Si vous voulez aussi le montant exact, vous pouvez utiliser
$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
}
Tout ce dont vous avez besoin est d'utiliser le bon signe de devise.Vous pouvez obtenir le signe de la monnaie actuelle par le code suivant:
Mage::app()->getLocale()->currency(Mage::app()->getStore()->getCurrentCurrencyCode())->getSymbol();
Je suggère que au lieu d'utiliser
$grandTotal = Mage::helper('checkout/cart')->getQuote()->getGrandTotal();
Veuillez utiliser
$quote = Mage::helper('checkout/cart')->getQuote();
$quoteData= $quote->getData();
$grandTotal=$quoteData['grand_total'];
Il donne une valeur d'entier / flotteur appropriée.