Ein Array über ein Plugin ins Template

Ich versuche seit Tagen, ein Arrary über ein Plugin ins Template zu bringen, allerdings mit wenig Erfolg. 

 

  public function subscribeEvents()
    {
          $this->subscribeEvent(
            'Enlight_Controller_Action_PreDispatch_Frontend_Register',
            'onBeforeSaveRegisterAction'
        );
    }


  public function onBeforeSaveRegisterAction(Enlight_Controller_ActionEventArgs $args)
    {
        $data = $args->getRequest()->getPost();
        $controller = $args->getSubject();
        $view = $controller->View();

        if ($args->getRequest()->getActionName() != 'saveRegister') {
            return;
        }

        if($this->userExists($data['register']['personal']['email'])){
            if($view->hasTemplate()){

                $errors['register']['personal']['emial'] = "BLUB";
                $errors['occurred'] = true;

                $view->addTemplateDir($this->Path() . 'Views/');
                $view->extendsTemplate('frontend/register/index.tpl');

                $view->assign('myErrors', $errors);
                $view->assign($data);
                $controller->forward('index');
                return;
            }
        }
    }

Ich habe erfolgreich eine Funktion geschrieben, welcher über AJAX ermittelt ob bei einer Gastbestellung die Email schon registriert ist oder nicht. Im Frontend passt es und mein AJAX validiert richtig und zeigt mir bei schon vorhandener Email die Fehlermeldung an. Jedoch bringt mir das alleine natürlich nichts, sondern ich muss nach dem Abschicken des Formulars ja nochmals validieren, was ja auch funktioniert, jedoch bekomme ich mein Array mit Fehlermeldung nicht ins Template, um dementsprechend “BLUB” als Fehlermeldung anzuzeigen,

Hättet Ihr mir eine Idee? Vielleicht bin ich ja auch im falschen Template um mir die Variable zu holen. Über {$myErrors|@var_dump} bekomme ich eine Null und über {$myErrors|@print_r} eine 1 aber ich bekomme nicht mein Array. Ich habe es auch schon ohne addTemplateDir und extendsTemplate versucht, da ich gehofft habe das Shopware schon begreift in welchem Template ich das Array haben möchte aber dem scheint wohl nicht so. Habe ich vielleicht was vergessen oder etwas total simples übersehen?

 

Grüße insane85

Hallo,

ich will nicht ausschließen, dass ich falsch liege, aber du registrierst dich ja nur auf den Register-Controller. Entsprechend sind die Daten aus dem Array auch maximal auf dem Controller verfügbar. Funktioniert das aktuell ggf. nur, wenn du über „mein Account“ gehst (dort kann man aber keine Gastbestellungen generieren)?

Ansonsten hab ich da so erstmal nix entdecken können.

$view->assign('mein_array', $data);

Müsste schon passen.

Moritz

Hallo Moritz,

da hast du schon recht, ich Registriere mich ja auch auf den Register-Controller. Dieser wird beim Bestellvorgang ja auch verwendet, da man ja selber entscheiden kann ob man nun ein Neues Konto erstellen möchte oder eben nur als Gast bestelln will. Das Standardverhalten von Shopware ist im Checkout auch etwas komisch, da man nach der Server validierung auf das Registrierungs Formular (ggf. mit Fehlermeldungen) weitergeleitet wird anstatt auf den Checkout Prozess. Meine Vermutung ist das ich durch den Wechsel auf den index.tpl vom Register meine View neu lädt und ich mein Array verliere. Sicher bin ich mir aber nicht und wie ich dem entgegenwirken kann weiss ich leider auch nicht. Darum such ich hier auch nach Hilfe.

Grüße

insane85