CLI: Erstellen eine absoluten URL zu einem Controller/Action

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 Synonymous,

schau mal hier: https://forum.shopware.com/discussion/39417/resource-shop-not-found-failure-in-console-plugin  Wink

Viele Grüße aus Schöppingen

cool Michael Telgmann

1 „Gefällt mir“

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:

  1. Bootstrap() ist bereits als deprecated gekennzeichet - gibt es hier eine Alternative?
  2. 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

cool Michael Telgmann

1 „Gefällt mir“