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);
}
}
0 Kommentare