سؤال

أحتاج إلى تحديث صفحة سلة التسوق وإظهار كتلة مخصصة في حالة ما إذا كان الإجمالي الكلي الخاص بي سلبيًا.

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

هذا يطبع -$2,269.50, ، ولكن عندما أستخدم الشرط أدناه، فإنه لا يعمل.

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

كيف يمكنني التحقق مما إذا كان الرقم أقل من 0 أي.سلبي

شكرًا

هل كانت مفيدة؟

المحلول

مشكلتك هي أن 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