Hi,
Ich brauche für ein Plugin über das CLI die Möglichkeit, eine absolute Shop URL anhand der Angabe von Controller & Action zu erhalten.
Dazu gehe ich wie folgt vor.
$url = Shopware()->Front()->Router()->assemble(array('controller' => 'search', 'action' => 'index'));
Das führt zu folgendem Ergebnis:
http://localhost/search
Der Pfad („search“) wird korrekt gebildet aber weder Protokoll noch Host stimmen. Korrekt wäre:
https://www.shop.com/search
Soweit ich mich erinnern kann, liegt das daran, dass das CLI den Shop-Context nicht kennt. D.h. es kennt auch die Konfiguration für Host etc. nicht. Und es gibt eine Methode, mit der man im CLI den Shop-Context setzen kann, aber mir will es absolut nicht einfallen und finden konnte ich dazu auch nicht.
Hat jemand einen Tipp für mich?
LG
HI Michael,
Danke für die Antwort. Das hatte ich gesucht. Jedoch löst es mein Problem mit dem Erzeugen der URL noch nicht.
Genaugenommen sind es zwei Probleme:
-
Bootstrap() ist bereits als deprecated gekennzeichet - gibt es hier eine Alternative?
- Die URL die ich mit der assemble() Methode des Routers erzeuge zeigt nach wie vor auf localhost und ignoriert meine Shop Instanz
Hier der entsprechende Ausschnitt:
$repository = Shopware()->Models()->getRepository('Shopware\Models\Shop\Shop');
$shop = $repository->getActiveById(1);
$shop->registerResources(Shopware()->Bootstrap());
// Get URL for search
$url = Shopware()->Front()->Router()->assemble(array('controller' => 'search', 'action' => 'index'));
// Returns http://locahlhost/search?sSearch=searchterm
// instead of https://www.shop.com/search?sSearch=searchterm
return 'Search';
Hast Du vielleicht noch einen Tipp für mich?
Danke & LG
Hi Synonymous,
ab Shopware 5.2 braucht die Methode registerResources() keine Parameter mehr. Im oben genannten Thread wurde noch 5.1.x verwendet.
Versuche mal folgendes:
$repository = Shopware()->Container()->get('models')->getRepository('Shopware\Models\Shop\Shop');
$shop = $repository->getActiveById(1);
$shop->registerResources();
$context = Context::createFromShop($shop, Shopware()->Container()->get('config'));
Shopware()->Container()->get('router')->setContext($context);
Viele Grüße aus Schöppingen
Michael Telgmann
1 „Gefällt mir“