Variable aus Plugin sichtbar machen!?

Hallo,

 

ich bin jetzt schon seit Stunden auf der Suche und habe alle Shopware Dokus durch, nirgends wird erklärt, wie man eine Variable im Template sichtbar macht.

Ich möchte gerne auf der Confirm-Seite die eMailadresse des Kunden auslesen und anzeigen, das war´s schon und ich bekomme es nicht hin.

Ich habe bereits ein Inputfeld auf der Confirmseite eingesetzt, welches mit einem Wert aus der Datenbank gefüllt ist.

 

 $this->subscribeEvent(
            'Enlight_Controller_Action_PostDispatch_Frontend_Checkout',
            'onPostDispatchCheckout'
        );



public function onPostDispatchCheckout(Enlight_Event_EventArgs $arguments)
    {
        /**@var $controller Shopware_Controllers_Frontend_Index*/
        $controller = $arguments->getSubject();

        $view = $controller->View();

        //Add our plugin template directory to load our extension.
        $view->addTemplateDir($this->Path() . 'Views/');

        $view->extendsTemplate('frontend/plugins/WhiteList/confirm.tpl');

		//Variable $white im Template verfügbar machen
		$view->assign('white', $this->getWhiteList());
			
    }

Im Template kann ich auf die Variable $white zugreifen und sie ausgeben lassen.

Nun möchte ich die Email Adresse des Kunden:

public function onPostDispatchCheckout(Enlight_Event_EventArgs $arguments)
    {
      $userData = Shopware()->Modules()->Admin()->sGetUserData;
			
    }

Das ist alles was ich dazu gefunden habe, wie kann ich nun die Email Adresse im Template ausgeben???

Ich habe stundenlang alles ausprobiert, Plugin hundertmal neuinstalliert, nichts funktioniert und ich finde keine Info, wie man eine Variable ausgibt.

Wer kann mir helfen???

Blush

Nachtrag: Die Variable muss noch nciht mal zwingend im Template verfügbar sein, ich brauche die eMailadresse im Plugin in der SQL Abfrage in der Where Klausel.

 

$email = $sUserData.additional.user.email;
	    $sql= "SELECT white FROM s_whitelist WHERE email = ?";
	    $white = Shopware()->Db()->fetchRow($sql, array($email));
	  
	    return $white['white'];

$sUserData.additional.user.email ist die Variable im Template, wie bekomme ich die email im Plugin verfügbar? Foot-in-Mouth

Hat keiner einen Tipp für mich? Crying

Wenn du deine Zeile richtig schreibst, dann bekommst du ein Array mit allen nötigen Infos zum User:

$userData = Shopware()->Modules()->Admin()->sGetUserData**()**;

Nur wie greife ich auf das array zu?

Wenn ich mir $userData im Frontend ausgeben lasse, dann ist das array leer.

Im Prinzip im Plugin:

$controller = $arguments->getSubject();
$view = $controller->View();
$view->assign('userData', $userData );

Im Template das Array auflisten lassen:

{$userData|print_r}

Hoffe hab deine Frage nicht faslch verstanden.

Das array ist im Frontend leer.

Wie komme ich im Plugin an die eMail-Adresse aus dem Array, dass ich diese in einer Funktion verwenden kann? Blush

Also innerhalb vom Plugin kann ICH die E-Mail im Bestellprozess wie folgt auslesen:

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

 

1 Like

Hallo R4M,

 

ich danke dir vielmals! Das war genau das, was ich gesucht habe. Damit konnte ich die restlichen Abfragen selbst programmieren und nun funktioniert mein Plugin!

Beste Grüße,

Sven.

Wobei das Auslesen aus einem Array sollte Grundlage sein, wenn man ein Plugin programierren möchte. Mittels print_r($userData); hättest du im Plugin dir alle Inhalte anzeigen lassen können. Dann wäre das Thema vor 3 Tagen schon erledigt gewesen :slight_smile:

Beste Grüße zurück und viel Erfolg.