Richter Weg um auf Email Adresse zuzugreifen?

Hallo Forum,

gibt es einen einfachen und sauberen Weg, in einer eigenen Funktion auf die E-Mail Adresse aus sUserData zuzugreifen?

In Shopware eigenen Funktionen funktioniert das ja so:

$userData = Shopware()->Modules()->Admin()->sGetUserData();
$eMail = $userData['additional']['user']['email'];

Möchte ich das so in einer eigenen Funktion machen, funktioniert der Shop nicht mehr. Auch wenn ich vorher Abfrage ob ich mich auch im Frontend bewege (Hatte ich anderswo gelesen).

Ich denke ein Schubser in die richtige Richtung würde mir schon sehr helfen. Konnte mir leider keine passende Antwort ergoogeln.

Lg, Nils

Möchte ich das so in einer eigenen Funktion machen, funktioniert der Shop nicht mehr.

Das heißt jetzt genau was? Im Prinzip ist das ja schon die „saubere” Lösung.

1 Like

Das ist schon mal gut zu wissen, danke dafür! Mein Problem ist, dass ich in von mir geschriebenen Funktionen nicht mehr an die Shopware Session Variablen rankomme.

Ein weiteres Beispiel wäre folgende Funktion:

public function MEINEFUNKTION(Enlight_Event_EventArgs $arguments)
	{

	     $controller = $arguments->getSubject();
         $request = $controller->Request();
	
	    if($request->getModuleName()!='frontend') {
		    return;
		}		
		//Auslesen der vom Kunden gewählten Zahlungsart
		$payment = Shopware()->Modules()->Admin()->sGetUserData();
		$userPayment = $payment['additional']['payment']['id'];
		
		if($userPayment == 4) {
		
		...mach was...

wirft folgenden Fehler aus: Call to a member function getModuleName()

Mit Version 5.1.3 hat es noch funktioniert, seit dem Update auf 5.2.24 habe ich Probleme damit.

Was muss ich meiner Funktion mitgeben, damit ich auf die sUserData Variablen zugreifen darf?

Ich weiß leider nicht wie ich das Problem besser beschreiben kann. Hast du vielleicht eine Idee IFF?

Weiß ja nicht worauf du genau zugreifen möchtest, aber als Anhaltspunkt:

$session = Shopware()->Session();
$userId = $session->offsetGet('sUserId');
$sUserMail = $session->offsetGet('sUserMail');

Dann könntest du damit eine DB-Abfrage machen, falls mehr Angaben gesucht.