Ich habe mit den Einkaufswagen-Preisregeln für Magento Enterprise 1.14.1.0 herumgespielt und bin auf ein Problem gestoßen.
Ich habe versucht, eine einfache Regel zu erstellen, nach der Sie einen Rabatt von 10 £ erhalten, wenn Sie 3 Artikel aus einer definierten Kategorie kaufen und mehr als 15 £ ausgegeben haben. Siehe meine Konfiguration unten.
In meinem Warenkorb befinden sich 3 Artikel aus der Kategorie mit ID 5
und 1 Artikel aus der Kategorie mit ID 3
.
Wenn ich diese Regel aktiviere und meinen Warenkorb ansehe, wird der schwerwiegende Fehler angezeigt. Hier ist ein Abschnitt der Stapelverfolgung. Wie Sie sehen, habe ich das bereits xdebug.max_nesting_level
auf ein schreckliches Niveau gebracht.
Fatal error: Maximum function nesting level of '18000' reached, aborting! in /dev/builds/1_14_1_0/lib/Varien/Object.php on line 344 Call Stack:
0.0003 348680 1. {main}() /dev/builds/1_14_1_0/index.php:0
0.0020 694956 2.Mage::run() /dev/builds/1_14_1_0/index.php:89
0.0068 1819640 3.Mage_Core_Model_App->run() /dev/builds/1_14_1_0/app/Mage.php:684
0.0509 9129168 4.Mage_Core_Controller_Varien_Front->dispatch() /dev/builds/1_14_1_0/app/code/core/Mage/Core/Model/App.php:354
0.0626 11074424 5. Mage_Core_Controller_Varien_Router_Standard->match() /dev/builds/1_14_1_0/app/code/core/Mage/Core/Controller/Varien/Front.php:172
0.0658 11765288 6. Mage_Core_Controller_Varien_Action->dispatch() /dev/builds/1_14_1_0/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php:250
0.1314 16963044 7. Mage_Checkout_CartController->indexAction() /dev/builds/1_14_1_0/app/code/core/Mage/Core/Controller/Varien/Action.php:418
0.3065 27313592 8. Mage_Checkout_Model_Cart->save() /dev/builds/1_14_1_0/app/code/core/Mage/Checkout/controllers/CartController.php:144
0.3195 28006864 9. Mage_Sales_Model_Quote->collectTotals() /dev/builds/1_14_1_0/app/code/core/Mage/Checkout/Model/Cart.php:458
0.3827 32507432 10. Mage_Sales_Model_Quote_Address->collectTotals() /dev/builds/1_14_1_0/app/code/core/Mage/Sales/Model/Quote.php:1331
0.6151 37466752 11. Mage_SalesRule_Model_Quote_Freeshipping->collect() /dev/builds/1_14_1_0/app/code/core/Mage/Sales/Model/Quote/Address.php:1013
0.6245 37839108 12. Mage_SalesRule_Model_Validator->processFreeShipping() /dev/builds/1_14_1_0/app/code/core/Mage/SalesRule/Model/Quote/Freeshipping.php:74
0.6247 37839784 13. Mage_SalesRule_Model_Validator->_canProcessRule() /dev/builds/1_14_1_0/app/code/core/Mage/SalesRule/Model/Validator.php:249
0.6282 37960924 14. Mage_Rule_Model_Abstract->validate() /dev/builds/1_14_1_0/app/code/core/Mage/SalesRule/Model/Validator.php:223
0.6418 38895940 15. Mage_Rule_Model_Condition_Combine->validate() /dev/builds/1_14_1_0/app/code/core/Mage/Rule/Model/Abstract.php:353
0.6420 38896372 16. Mage_SalesRule_Model_Rule_Condition_Product_Subselect->validate() /dev/builds/1_14_1_0/app/code/core/Mage/Rule/Model/Condition/Combine.php:307
0.6421 38896772 17. Mage_SalesRule_Model_Rule_Condition_Product_Combine->validate() /dev/builds/1_14_1_0/app/code/core/Mage/SalesRule/Model/Rule/Condition/Product/Subselect.php:117
0.6428 38898084 18. Mage_SalesRule_Model_Rule_Condition_Product_Subselect->validate() /dev/builds/1_14_1_0/app/code/core/Mage/SalesRule/Model/Rule/Condition/Product/Combine.php:219
0.6429 38898484 19. Mage_SalesRule_Model_Rule_Condition_Product_Combine->validate() /dev/builds/1_14_1_0/app/code/core/Mage/SalesRule/Model/Rule/Condition/Product/Subselect.php:117
0.6433 38898572 20. Mage_SalesRule_Model_Rule_Condition_Product_Subselect->validate() /dev/builds/1_14_1_0/app/code/core/Mage/SalesRule/Model/Rule/Condition/Product/Combine.php:219
0.6434 38898972 21. Mage_SalesRule_Model_Rule_Condition_Product_Combine->validate() /dev/builds/1_14_1_0/app/code/core/Mage/SalesRule/Model/Rule/Condition/Product/Subselect.php:117
0.6439 38899060 22. Mage_SalesRule_Model_Rule_Condition_Product_Subselect->validate() /dev/builds/1_14_1_0/app/code/core/Mage/SalesRule/Model/Rule/Condition/Product/Combine.php:219
0.6440 38899460 23. Mage_SalesRule_Model_Rule_Condition_Product_Combine->validate() /dev/builds/1_14_1_0/app/code/core/Mage/SalesRule/Model/Rule/Condition/Product/Subselect.php:117
Wenn ich den If total quantity is 3
Abschnitt aus dem Condition
dann entferne, flippt Magento nicht mehr aus. Könnte mich jemand auf die richtige Art und Weise hinweisen, um diese Aktion zu konfigurieren, und etwas Licht ins Dunkel bringen, warum ich tödlich bin?
Dies ist eine Vanille-Installation von Magento, und ich mache mir Sorgen, dass ich den Einkaufswagen so leicht zerbrechen kann.
Aktualisieren
Ich verwende MySQL als
Server version: 5.5.41-0ubuntu0.12.04.1 (Ubuntu)
Und PHP als
PHP 5.3.10-1ubuntu3.15 with Suhosin-Patch (cli) (built: Oct 29 2014 12:16:30)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
with the ionCube PHP Loader v4.0.10, Copyright (c) 2002-2011, by ionCube Ltd., and
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
Update 2
Ein Datenbank-Dump ist hier verfügbar und liegt bei ~ 130 KB.
http://www.lukerodgers.co.uk/files/vanilla_1_14_1_0.sql.gz
- Wurde mit MySQL erstellt, das als root @ localhost ohne Passwort ausgeführt wird
- Der Benutzername des Magento Admin Panels lautet
admin
und das Passwort lautetpassword1
- Sie müssen das
web/unsecure/base_url
undweb/secure/base_url
in aktualisierencore_config_data
, um auf Ihre Installationsinstanz zu verweisen.
Zu replizieren
- Fügen Sie als Gast 1 Green Bowler zu Ihrem Warenkorb hinzu
- Dann lege 3 grüne Stiefel in deinen Warenkorb
- Hoffentlich habe ich einen schrecklichen Fehler, wie ich sehe
quelle
magerun index:reindex:all
und es machte keinen Unterschied. Ich bin heute und morgen bei der Arbeit sehr beschäftigt, aber wenn Sie immer noch nicht replizieren, kann ich am Donnerstag einen DB-Dump bereitstellen, wenn das gut ist?Antworten:
nahm die Änderung, um in diese einzutauchen. Installierte ein sauberes Magento Enterprise 1.14.1.0
Ihre Regel bricht immer noch ohne die erste
>15 rule
...Der Ursprung liegt in der Produktunterauswahl.
Diese beiden Funktionen, die sich wiederholt aufrufen.
Spezifischer:
Mage_SalesRule_Model_Rule_Condition_Product_Subselect: 118
Mage_SalesRule_Model_Rule_Condition_Product_Combine: 216
Wie Sie sehen können, rufen Sie die erweiterte Funktion erneut auf, wenn das Produkt konfigurierbar ist (was in Ihrem Fall für beide Produkte der Fall ist). Und so weiter und so weiter und so fort ...
Es ist in der Tat ein Magento-Fehler, da nicht überprüft wird, ob es sich um ein gültiges Element handelt, das an die Funktion übergeben wurde.
Normalerweise wird die Funktion mit
Mage_Sales_Model_Quote_Address
und in der Rekursion mit aufgerufen,Mage_Sales_Model_Quote_Item
damit wir einen Fix dafür erstellen können. Beide haben auch eine getQuote () -Funktion.Wenn Sie es in Ihrem Fall lösen möchten, fügen Sie diese Baumlinien hinzu.
Mage_SalesRule_Model_Rule_Condition_Product_Subselect
Sie können diese Datei nach app / code / local / Mage / SalesRule / Model / Rule / Condition / Product / Subselect.php kopieren
Meine letzte Prüfung besteht also darin, festzustellen, ob dies auch für Magento CE 1.9.1.0 gilt. Dies ist auch der Fall, weil die übergeordnete Funktion in der CE-Edition implementiert ist. Magento CE 1.9.0.1 ist nicht betroffen, es hat nicht die übergeordnete Funktion! Ich vermute also, dass Magento EE 1.13.1.0 auch davon frei ist, weil die einander inhärent sind.
Sie sollten ein Ticket in Ihrem Magento Enterprise-Konto erstellen und die Informationen angeben, damit sie einen Patch dafür erstellen können.
quelle