Hallo, ich möchte gerne auf Katogorien mit GET-Parametern verlinken. Die URL von Kategorien sieht bei shopware zum Beispiel so aus meinshop.de/Produkte/Ausstellungen/ Wie kann man da GET-Parameter anhängen? Ist ja keine Datei am Ende So ja wohl nicht meinshop.de/Produkte/Ausstellungen/?ausstellung=3 Geht das irgendwie? Beste Grüße
[quote]meinshop.de/Produkte/Ausstellungen/?ausstellung=3[/quote] Müsste gehen
Danke. Ich lese das in einem Einkaufswelt-Element ein. $_GET[‘Ausstellung’] ist da leer. Oder geht das bei den verschachtelten Einkaufselementen nicht? Beste Grüße
Hallo nochmal. Kann man innerhelb eines Einkaufselement oder besser gesagt innerhalb einer indexaction innerhalb des Einkaufselements auf GET Parameter zugreifen? Und wenn ja, wie? Oder macht man das irgendwie anders? Ich brauche verschiedene Daten die ich von einer Seite auf eine andere bringen möchte. Bei mir kommt das GET einfach nicht an. Beste Grüße
Auf die GET Parameter greifst du normalerweise mit $this-\>Request()
zu Beispielcode http://devpro.ch/2015/08/in-shopware-au … zugreifen/
Wenn du meinshop.de/Produkte/Ausstellungen/?ausstellung=3 aufrufst ist es kein Wunder, dass \_GET['Ausstellung'] leer ist. In _GET[‚ausstellung‘] dürfte aber ‚3‘ stehen.
die superglobals sollte man am besten nicht verwenden, dafür gibt es das request object. Andernfalls muss man halt filtern etc.
Hallo und Danke für die Antworten. Klappt aber leider immer noch nicht. [quote]Wenn du meinshop.de/Produkte/Ausstellungen/?ausstellung=3 aufrufst ist es kein Wunder, dass \_GET['Ausstellung'] leer ist. In _GET[‚ausstellung‘] dürfte aber ‚3‘ stehen.[/quote] ja klar. Hatte das nur hier falsch geschrieben. Daran liegt es also (leider) nicht. Hier der konkrete Code: Aufgerufen wird das innerhalb der tpl-Datei eines Einkaufswelt-Elements {block name="widget\_emotion\_component\_html\_panel"} ... {action module=Widgets controller=kkPictureSelectedInner action=index} ... {/block}
Damit wird dann kkPictureSelectedInner.php aufgerufen class Shopware\_Controllers\_Widgets\_kkPictureSelectedInner extends Enlight\_Controller\_Action ... public function indexAction() $request = $this-\>Request(); $gettest = $request-\>getParam('ausstellung'); $cookietest = $request-\>getCookie('design'); } }
Der cookie kommt an, das GET nicht. Im übrigen geht gettest = _GET[‚ausstellung‘]; auch nicht. Kann es damit zuammenhängen, dass es innerhalb einer Einkaufselement eine action ist? Beste Grüße
Lass dir doch mal testweise die Superglobals mit print\_r($\_GET);
ausgeben. Ich hab grad leider keinen Testshop zur Hand wo ich das mal eben selber durchspielen könnte.
print_r(\_GET); gibt folgendes aus: [code]Array ( [module] =\> Widgets [controller] =\> kkPictureSelectedInner [action] =\> index) [/code] Im Prinzip also der Aufruf. Keine GET Parameter. 'module' etc kann ich dementsprechend auch über _GET erreichen. aber eben nicht ‚ausstellung‘
https://tcgshop.ch/shopware5/frontend/t … ex?foo=bar Also mir gibt er die Testvar im Controller aus, ka was da bei dir noch schief läuft. Ist dabei auch egal ob als Superglobal oder als request object.
Danke. Ist es bei dir auch in einem aufgerufenen action? Ich vermute, dass der Aufruf mit GET erfolgt. Darauf deutet das Ergebnis von print_r: Array ( [module] => Widgets [controller] => kkPictureSelectedInner [action] => index). Es werden module, controller und action übergeben. Die ursprünglichen GET Parameter nicht. Aber es müsste doch einen Weg geben, diese GET Parameter in das action zu kriegen. Beste Grüße
Die Ausgabe bei mir ist im eigenen Controller der den Action Controller extended, also wie bei dir. Das sieht ansich auch schon an der url https://tcgshop.ch/shopware5/frontend/t … ex?foo=bar Module = frontend Controller = test action = index
Da ist glaube ich der Unterschied. Ich habe nicht einen wirklich eigenen Controller, sondern binde ihn per {action…} auf. Das sieht man nicht in der url. dieser Aufruf mit index? funktioniert bei mir auch nicht.
Superglobals ($_GET) sind Grundlegend immer überall verfügbar, deswegen ja auch der Name. Davon abgesehen ruft die Url meinshop.de/Produkte/Ausstellungen/?ausstellung=3 das frontend Modul auf, du selber befindest dich aber im Modul „Widgets“ siehe [quote]Ich vermute, dass der Aufruf mit GET erfolgt. Darauf deutet das Ergebnis von print_r: Array ( [module] => Widgets [controller] => kkPictureSelectedInner [action] => index).[/quote]
ok, du scheinst das mit der Einbindung einer {action…} nicht zu kennen. Macht ja nichts. Ich weiß nicht, worüber wir hier diskutieren. Willst du mir erklären, dass es geht, obsohl es nicht geht? Also noch einmal an die anderen. Wie bekomme ich die GET Parameter in das {action…}-widget ? Beste Grüße
[quote]ok, du scheinst das mit der Einbindung einer {action…} nicht zu kennen. [/quote] doch^^ [quote]Also noch einmal an die anderen[/quote] gerne…
Liebes Forum Ich bin schon eine Weile an dem gleichen Problem. Auch ein Einkaufswelt Element, mit einem {action}, dem ich per GET Daten übergeben möchte. Jetzt habe ich das auch mal mit print_r getestet. Ist bei mir genau das gleiche. Irgendwie kommen die GET Variablen nicht an. Hat jemand eine Idee? Liebe Grüße Kerstin
Achtung: Absoluter Anfänger Problem: Über die echte Url wird die Kategorie aufgerufen, welche im Normalfall nach dem ersten Aufruf im Cache liegt. Hier kann ich also nicht mehr via Event der GET abfangen und der Aufruf vom widget angepasst werden! Durch die Widget-Einbindung via {action} wird der Cache angewiesen, intern einen komplett neuen Request an den Shop aufzubauen. Dieser Aufruf baut sich aus den Parametern im {action} zusammen => der Aufruf kann also garnicht Euren “GET”-Parameter kennen - der Aufruf ist - einmal im Cache - immer gleich. Ich glaube auch nicht, dass hier in irgendeiner Form ein Cookie helfen kann, den müste der Cache-Controler ja auswerten und dem internen Request 1:1 übergeben ?!? Das widget wird - wenn ich das also richtig verstanden habe - ja nicht über den Browser nachgeladen, sondern über den Cache und dann in die Ausgabe eingesetzt. Wenn die original-GET übergeben werden, müssten diese eigentlich in einer anderen Variablen gekapselt sein? Nun die spannende Frage, die sich mir auch stellt: Wie sind die ESI-Aufrufe “standarisiert”? Wird vom http-cache bei internen Aufruf die original-URI überhaupt als parameter übergeben, oder nicht? Wenn nicht => nix zu machen, der Shop kennt den GET aus dem Browseraufruf ja garnicht. Kann auch sein, dass ich völlig falsch liege, und Obiges völliger Stuss ist Wäre mal nett, hier einen Denkanstoß aus dem Hause Shopware zu bekommen :shopware:
[quote=„Gutverkaufen“]ok, du scheinst das mit der Einbindung einer {action…} nicht zu kennen. Macht ja nichts. Ich weiß nicht, worüber wir hier diskutieren. Willst du mir erklären, dass es geht, obsohl es nicht geht?[/quote] Wenn du in einem kostenlosen Forum nach Hilfe ohne jede Gegenleistung suchst, dann wäre ich vorsichtig, wie du mit den Helfern umgehst… So wird dir langfristig niemand mehr antworten. Zudem scheinen dir elementare Grundlagen zu fehlen. Schau dich mal vorher mal in der Shopware Doku um und versuche dich an den Tutorials. [quote=„sonic“]Durch die Widget-Einbindung via {action} wird der Cache angewiesen, intern einen komplett neuen Request an den Shop aufzubauen.[/quote] Genau richtig. Viele Grüße