Ich habe zwei Fragen: 1. Ich überprüfe wie unter http://wiki.shopware.de/Fortgeschritten … 0_870.html mit public function preDispatch() { if (!$this-\>admin-\>sCheckUser()) { return $this-\>forward('login', 'account'); }
ob ein Kunde bereits eingeloggt ist. Ist dies nicht der Fall und der Kunde hat sich musste sich einloggen, landet er in seinem Accountbereich. Ich möchte aber, dass dann wieder mein Controller mit den gleichen Parametern wie vorher aufgerufen wird. Wie muss ich dafür vorgehen? 2. Im Backend möchte ich aus meinem Plugin heraus einen bestimmten Tab der Artikeldetailansicht offnen. Mit Shopware.app.Application.addSubApplication({ name: 'Shopware.apps.Article', params: { articleId: articleId } });
öffne ich den entsprechenden Artikel, doch wie wähle ich jetzt, den von mir hinzugefügten Tab aus?
Zu 1.: Man kann die forward-Funktion entsprechend erweitern. Z.B.: return $this-\>forward('detail','index', null, array('sArticle'=\>$id));
Zu 2.: Dafür müsstest du den Main-Controller (main.js) überschreiben. Dann gibst du bei params einen Wert mit, dass im Controller dein Code angesprochen werden soll. Schau dir mal die Datei main.js aus der Customer-Applikation an. Dort wird eine solche Fallabfrage durchgeführt. Grüße Mathias
Ich knüpfe mal hier wieder an. Mit if (!$this-\>admin-\>sCheckUser()) { return $this-\>forward('login', 'account', null, array('sTarget' =\> 'MeinController')); }
erreiche ich, dass nach dem Login die indexAction von MeinController aufgerufen wird. Erreiche ich auch irgendwie, dass der Vollständige Request danach ausgeführt wird? Ich hab schon probiert was dranzumogeln, aber das wird immer ordentlich URL-Encoded… Also wie erreiche ich, dass die Weiterleitung nach dem Login z.B. auf /MeinController/meineAction/Parameter/Wert geht?
Derzeit ist nur Implementiert, das über sTarget ein Controller fürs redirect übergeben werden kann. Und leider auch nach so vielen Jahren immer noch so ist ;( …
Jupp, man kann leider nur sTarget und sTargetAction mit übergeben, sArticle wird verworfen was zu einem 404 dann nach dem login führt