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 3 Monate her

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

wpDiscuz
Weitere Beiträge zum Thema
Flagbit realisiert neues FACT-Finder-Modul
Kundengebundene Fehler finden – Magento 2
Neue TypoGento Version verfügbar!
TypoGento.com online und Artikel in der T3N