J'ai joué avec les règles de prix du panier pour Magento Enterprise 1.14.1.0 et j'ai rencontré un problème.
J'essayais de créer une règle simple telle que vous obtiendrez une remise de 10 £ si vous achetez 3 articles dans une catégorie définie et que vous avez dépensé plus de 15 £. Voir ma configuration ci-dessous.
Dans mon panier, j'ai 3 articles de la catégorie avec id 5
, et 1 article de la catégorie avec id 3
.
Lorsque j'active cette règle et que je consulte mon panier, je reçois l'erreur fatale. Voici une section de la trace de pile. Comme vous pouvez le voir, j'ai déjà atteint xdebug.max_nesting_level
des niveaux horribles.
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
Lorsque je supprime la If total quantity is 3
section de Condition
Magento, cela ne panique plus. Quelqu'un pourrait-il m'indiquer la bonne façon de configurer cette promotion, ainsi que faire la lumière sur la raison pour laquelle je suis fatal?
Il s'agit d'une installation vanille de Magento, et je crains de ne pas pouvoir casser le panier si facilement.
Mise à jour
J'utilise mysql en tant que
Server version: 5.5.41-0ubuntu0.12.04.1 (Ubuntu)
Et PHP comme
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
Un vidage de la base de données est disponible ici, arrive à ~ 130kb.
http://www.lukerodgers.co.uk/files/vanilla_1_14_1_0.sql.gz
- A été créé avec mysql en l'exécutant en tant que root @ localhost sans mot de passe
- Le nom d'utilisateur du panneau d'administration Magento est
admin
et le mot de passe estpassword1
- Vous devrez mettre à jour le
web/unsecure/base_url
etweb/secure/base_url
verscore_config_data
pour pointer vers votre instance d'installation.
Pour répliquer
- En tant qu'invité, ajoutez 1 Green Bowler à votre panier
- Ajoutez ensuite 3 bottes vertes à votre panier
- J'espère avoir une horrible erreur comme je vois
la source
magerun index:reindex:all
et cela n'a fait aucune différence. Je suis très occupé aujourd'hui et demain au travail, mais si vous ne parvenez toujours pas à répliquer, je serai en mesure de fournir un vidage de base de données jeudi si c'est bon?Réponses:
a pris le changement pour plonger dans cela. Installation d'un Magento Enterprise 1.14.1.0 propre
Votre règle casse toujours sans le premier
>15 rule
...Son origine est dans la sous-sélection du produit.
Ces deux fonctions qui s'appellent à plusieurs reprises.
Plus spécifique:
Mage_SalesRule_Model_Rule_Condition_Product_Subselect: 118
Mage_SalesRule_Model_Rule_Condition_Product_Combine: 216
Comme vous pouvez le voir, si le produit est configurable (ce qui est vrai pour les deux produits), appelez à nouveau la fonction étendue. Et ainsi de suite, et ainsi de suite, et ainsi de suite ...
Il s'agit en effet d'un bug Magento car il ne vérifie pas s'il s'agit d'un élément valide passé à la fonction.
Normalement, la fonction est appelée avec
Mage_Sales_Model_Quote_Address
et dans la récursivité avecMage_Sales_Model_Quote_Item
afin que nous puissions construire un correctif pour elle. Les deux ont également une fonction getQuote ().Si vous voulez le résoudre dans votre cas, cela se fait en ajoutant ces lignes d'arbre.
Mage_SalesRule_Model_Rule_Condition_Product_Subselect
Vous pouvez copier ce fichier dans app / code / local / Mage / SalesRule / Model / Rule / Condition / Product / Subselect.php
Donc, ma dernière vérification est de voir si cela s'applique également à Magento CE 1.9.1.0. C'est également le cas car la fonction parent est implémentée dans l'édition CE. Magento CE 1.9.0.1 n'est pas affecté, il n'a pas la fonction parent! Je suppose donc que Magento EE 1.13.1.0 est également exempt de cela, car ils sont inhérents les uns aux autres.
Vous devez créer un ticket dans votre compte Magento Enterprise et fournir les informations afin qu'ils puissent créer un patch pour cela.
la source