Patch für CustomerController / Magento 1.4.0.1

Da derzeit das Error-Handling im CustomerController des Backends kaputt. Statt der Exception-Message erscheint eine andere Exception: sehr unschön und mühsam beim Debuggen:

Item (Mage_Customer_Model_Address) with the same id "1" already exist

#0 /var/www/virtual/mage/mage-df-1/app/code/core/Mage/Eav/Model/
Entity/Collection/Abstract.php(236): 
Varien_Data_Collection->addItem(Object(Mage_Customer_Model_Address))
#1 /var/www/virtual/mage/mage-df-1/app/code/core/Mage/
Customer/Model/Customer.php(204): 
Mage_Eav_Model_Entity_Collection_Abstract->addItem
(Object(Mage_Customer_Model_Address))
#2 /var/www/virtual/mage/mage-df-1/app/code/core/Mage/
Adminhtml/controllers/CustomerController.php(112): 
Mage_Customer_Model_Customer->addAddress(Object(Mage_Customer_Model_Address))
#3 /var/www/virtual/mage/mage-df-1/app/code/core/Mage/
Core/Controller/Varien/Action.php(418): 
Mage_Adminhtml_CustomerController->editAction()
#4 /var/www/virtual/mage/mage-df-1/app/code/core/Mage/
Core/Controller/Varien/Router/Standard.php(254): 
Mage_Core_Controller_Varien_Action->dispatch('edit')
#5 /var/www/virtual/mage/mage-df-1/app/code/core/Mage/
Core/Controller/Varien/Front.php(177): 
Mage_Core_Controller_Varien_Router_Standard->match
(Object(Mage_Core_Controller_Request_Http))
#6 /var/www/virtual/mage/mage-df-1/app/code/core/Mage/
Core/Model/App.php(304): 
Mage_Core_Controller_Varien_Front->dispatch()
#7 /var/www/virtual/mage/mage-df-1/app/Mage.php(596): 
Mage_Core_Model_App->run(Array)
#8 /var/www/virtual/mage/mage-df-1/index.php(78): Mage::run('', 'store')
#9 {main}

Ich habe den Bug als Issue erfasst, doch es dürfte wohl etwas dauern, bis Varien das Issue bearbeitet und die nächste Version veröffentlicht. Den Patch habe ich auch dem Issue im Magento-Bugtracker angehängt aber offensichtlich können Dateien von außen nicht abgerufen werden, was sehr schade ist. Daher veröffentliche ich den Patch auch mal hier:

### Eclipse Workspace Patch 1.0
#P magento-1.4
Index: app/code/core/Mage/Adminhtml/controllers/CustomerController.php
===================================================================
--- app/code/core/Mage/Adminhtml/controllers/CustomerController.php	(revision 61891)
+++ app/code/core/Mage/Adminhtml/controllers/CustomerController.php	(working copy)
@@ -107,9 +107,12 @@
         }
         if (isset($data['address']) && is_array($data['address'])) {
             foreach ($data['address'] as $addressId => $address) {
-                $addressModel = Mage::getModel('customer/address')->setData($address)
+                if (!($addressModel = $customer->getAddressItemById($addressId))) {
+                    $addressModel = Mage::getModel('customer/address');
+                    $customer->addAddress($addressModel);
+                }
+                $addressModel->setData($address)
                     ->setId($addressId);
-                $customer->addAddress($addressModel);
             }
         }

Hinterlasse einen Kommentar

1 Kommentar auf "Patch für CustomerController / Magento 1.4.0.1"

Benachrichtige mich zu:
avatar

Sortiert nach:   neuste | älteste | beste Bewertung
muc
Gast
8 Jahre 5 Monate her

Ja besten Dank für den Fix. Es dauert leider etwas bis die Bugs bearbeitet werden.

wpDiscuz
Weitere Beiträge zum Thema
Magento 2: Demos machen Lust auf mehr
FACT-Finder-Features als Magento-Modul verfügbar
Neue Magento-Extension: FAQ
Neue t3n mit Flagbit Performance-Tipps für Magento