$this->redirect()

Guten Morgen alle Zusammen.

Ich rufe eine eigenen Controller inkl. eines Parameters. z.b /controller/index/id/2/

Vorher wird im preDispatch() noch überprüft, ob dieser User eingeloggt ist, ansonsten leite ich Ihn zum Login

$this->admin = Shopware()->Modules()->Admin();
        if (!$this->admin->sCheckUser()) {
          return $this->redirect(
              array(
                  'controller'=> 'account',
                  'action' => 'index',
                  'sTarget'=> 'controller',
                  'sTargetAction' => 'index'
                  )
          );
        }

Damit stelle ich sicher, dass dieser auch eingeloggt ist.

Wie aber schleife ich hier noch den Parameter /id/2 mit durch ? Diese Art der Umleitung geht ja nicht mit $this->forward.

Hi,

du kannst auch eigene Parameter im Array mitgeben. Beispiel:

       return $this->redirect(
              array(
                  'controller'=> 'account',
                  'action' => 'index',
                  'sTarget'=> 'controller',
                  'sTargetAction' => 'index',
                  'id' => 2
              )
       );

Gruß Heiner

Also es kommt das Loginfenster . in der URL steht korrekterweise

/account/index/sTarget/controller/sTargetAction/index/id/2

 

nach dem Login sprint der auf

/controller

 

NIcht so wie ich es mir vorgestellt habe

 

Ach so.

Ja, das geht nicht. Das Login gibt nur die sTarget-Parameter weiter.
Du könntest aber etwas in die Session schreiben:
 Shopware()->Session()->meinWert = 1;
Und es dann nachher abfragen.
 

Gruß Heiner

 Hallo @megadruck‍, Sie können Session Lösung benutzen wie Heiner hat gesagt. oder benutzen Sie die nächste hooks: loginAction fuktion in Account Controller mit replace hook ob request Ihr Controller custom redierct und die Orginal funktion mit die andere Controller.

und für nue Kunden:

 Shopware\_Modules\_Admin\_SaveRegister\_Successful 

Hier können Sie einfach redierct zu korrekte Url.

Viele Grüße,

Ahmad.

Danke für die Tips. ICh denke die Session Variante ist die bessere.