Hallo, ist es irgendwie möglich über ein Event oder Hook die Infos auf der „account“ Seite aus dem Template ($sUserData.additional.user) zu erweitern? Ich habe zwar ein Event erstellt, „ShopwareModulesAdminCheckUserFilterGetUser“ Die Daten die ich per setReturn() wieder einlese werden aber vollkommen ignoriert und es werden nur die Infos angezeigt, die vor meinen versuchten Änderungen auch drin waren. Als Beispiel: private function registerEvents() {//Events $this-\>subscribeEvent( 'Shopware\_Modules\_Admin\_CheckUser\_FilterGetUser', 'ShopwareModulesAdminCheckUserFilterGetUser' ); }
public function ShopwareModulesAdminCheckUserFilterGetUser(Enlight\_Event\_EventArgs $arguments) { $return = $arguments-\>getReturn(); $return['MultiNewsletter\_ON'] = 1; $arguments-\>setReturn($return); }
Wenn ich dies per print_r(); ausgebe, sind alle Informationen die ich hinzufüge, vorhanden. Nur kommen diese nicht im Template an. Weiß hier jemand Rat? z.b. ein passendes Event, Hook. Beste Grüße
probiers mal so: $view = $args-\>getSubject()-\>View(); $view-\>assign('myValues', array('v0', 'v1));
dann kannst du die template vars ansprechen: [code]
{$myValues.0}
{$myValues.1}
[/code] du kannst natürlich auch view variablen abfragen und ändern $view = $args-\>getSubject()-\>View(); $articles = $view-\>getAssign('sArticles'); // mach was mit $articles $view-\>assign('sArticles', $articles);
Hy, View(); scheint an dieser Stelle nicht zur Verfügung zu stehen. Wenn ich $view = $arguments-\>getSubject()-\>View();
Nutze bekomme ich : Fatal error: Call to undefined method Shopware\_Proxies\_sAdminProxy::View()
Bei: $args-\>getSubject()-\>View();
Bekomme ich : Call to a member function getSubject() on a non-object
Beste Grüße,
Alles nach dem anderen: 1. die $args->… spuckt den Fehler aus, weil bei Dir die Variable $arguments heißt. 2. $arguments->getSubject()->View() ist an der Stelle auch falsch, da die Filter-Events nicht mit den Views arbeiten, sondern nur mit Return- (und Request-) Parametern. Soweit so gut - Du setzt die schon mal richtig. 3. Jetzt zur Ausgabe: man registriere noch einen Frontend-Event, der View hat: $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PostDispatch', 'onFrontendPostDispatch' );
Dann in der Funktion onFrontendPostDispatch das hier nicht vergessen (genauere Einbindug aller nötigen Parameter ist hier beschrieben) : $view-\>extendsTemplate('frontend/PFAD\_ZUM\_TEMPLATE/user.tpl');
Und als letztes die frontend/PFAD_ZUM_TEMPLATE/user.tpl erstellen und den Block {block name=“frontend_account_index_info”} aus der shopware/templates/_emotion/frontend/account/index.tpl nach Wunsch appenden/prependen/überschreiben. Done.
Moin Moin, danke für die Tipps. Ich habs nun mit : $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PostDispatch\_Frontend\_Account', 'onPostDispatchFrontend' );
hinbekommen. Über : $this-\>subscribeEvent( 'Shopware\_Modules\_Admin\_CheckUser\_FilterGetUser', 'ShopwareModulesAdminCheckUserFilterGetUser' );
Kann ich allerdings noch die POST Requests mit jQuery verarbeiten Nun läuft es auch Man muss nur den richtigen Einstiegspunkt finden. Das ist teilweise garnicht so einfach. Scheinbar werden nicht alle Events in der Wiki gelistet. Multi-Newsletter kann kommen Besten Dank,
Achja, ich möchte die anderen die danach “Suchen” auch nicht im Dunkeln lassen. private function registerEvents() {//Events $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PostDispatch\_Frontend\_Account', 'onPostDispatchFrontend' ); }
public function onPostDispatchFrontend(Enlight\_Event\_EventArgs $arguments) { //Template Variablen laden $view = $arguments-\>getSubject()-\>View(); $MultiNewsletter['GlobalON'] = 1; $view-\>assign('MultiNewsletter', $MultiNewsletter); }
Dies kann dann im Template mit {$MultiNewsletter.lobalON}
abgefragt werden.