Hallo, ich habe ein Problem bei Shopware. Ich speicher in den Freitextfeldern der Lieferadresse gewisse interne Kundeninfos. Problem ist nun, dass die Werte der Freitextfelder bei einer Änderung der Lieferadresse im Frontend verloren gehen. Nun dachte ich, dass ich mich zur Korrektur einfach an das Event Shopware_Modules_Admin_UpdateShippingAttributes_FilterSql anhängen kann und hier die Daten ergänze. Mein Code sieht in etwa so aus: // Event zur Vermeidung vom Verlust der Freitextfelder $this-\>subscribeEvent( 'Shopware\_Modules\_Admin\_UpdateShippingAttributes\_FilterSql', 'keepShippingFreeText' ); public function keepShippingFreeText(Enlight\_Event\_EventArgs $args) { /\*\* @var $customer \Shopware\Models\Customer\Customer\*/ $customerId = $args-\>getId(); $customer = Shopware()-\>Models()-\>find('Shopware\Models\Customer\Customer', $customerId); if (!$customer) { return $args; } // Freitext-Werte vom Kunden werden gesetzt damit diese nicht verloren gehen $return = array(); $return['text1'] = $customer-\>getShipping()-\>getAttribute()-\>getText1(); $return['text2'] = $customer-\>getShipping()-\>getAttribute()-\>getText2(); $return['text3'] = $customer-\>getShipping()-\>getAttribute()-\>getText3(); $return['text4'] = $customer-\>getShipping()-\>getAttribute()-\>getText4(); $return['text5'] = $customer-\>getShipping()-\>getAttribute()-\>getText5(); $return['text6'] = $customer-\>getShipping()-\>getAttribute()-\>getText6(); #$args-\>setReturn($return); return array($return); }
Lokal funktioniert das Ganze bei mir. Online auf dem Live-Server kriege ich leider folgende Fehlermeldung: Fatal error: Uncaught exception 'ReflectionException' with message 'Class does not exist' in /var/www/shopware/engine/Library/Doctrine/Common/Persistence/Mapping/RuntimeReflectionService.php:73 Stack trace: #0 /var/www/shopware/engine/Library/Doctrine/Common/Persistence/Mapping/RuntimeReflectionService.php(73): ReflectionClass-\>\_\_construct(false) #1 /var/www/shopware/engine/Library/Doctrine/ORM/Mapping/ClassMetadataInfo.php(769): Doctrine\Common\Persistence\Mapping\RuntimeReflectionService-\>getClass(false) #2 /var/www/shopware/engine/Library/Doctrine/ORM/Mapping/ClassMetadataFactory.php(591): Doctrine\ORM\Mapping\ClassMetadataInfo-\>initializeReflection(Object(Doctrine\Common\Persistence\Mapping\RuntimeReflectionService)) #3 /var/www/shopware/engine/Library/Doctrine/ORM/Mapping/ClassMetadataFactory.php(272): Doctrine\ORM\Mapping\ClassMetadataFactory-\>initializeReflection(Object(Doctrine\ORM\Mapping\ClassMetadata), Object(Doctrine\Common\Persistence\Mapping\RuntimeReflectionService)) #4 /var/www/shopware/engine/Library/Doc in /var/www/shopware/engine/Library/Doctrine/Common/Persistence/Mapping/RuntimeReflectionService.php on line 73 503 Service Unavailable
Der Event wird in der Methode sUpdateShipping() in der Klass sAdmin ausgelöst. Ich weiß nicht mehr weiter und habe überhaupt keinen Ansatz. Für mich sieht mein Rückgabe-Array genauso aus wie das was auch ohne Modifikation im Event geschrieben wird ($attributeData in der genannten Methode). Aber sobald ich in dem Event ein Array zurückgebe kommt der Fehler. Vielleicht möchte ich auch ganz falsch die Rückgabe des Events ändern. Es ist Shopware in der Community Edition in der Verison 4.1.0 im Einsatz. Auf dem Server läuft PHP Version 5.3.2-1ubuntu4.24. Die System-Information sieht gut aus - da werden keine Fehler oder sowas ausgegeben. Achso - das vielleicht noch als Info: Ich weiß nicht warum aber ein var_dump von $args im Event ist nicht möglich. Ebenso geht der Aufruf von $args->setReturn($return); nicht. Leider läuft bei mir lokal die Version 4.1.14. Grundsätzlich hat sich aber im Event nichts verändert. Kann mir hier irgendjemand bei den Problemen helfen? Vielen Dank! Timo
Man man man… Der Fehler hatte eine andere Quelle und lag nicht im Event.