Shopware()->Shop() gibt null zurück?

Hallo zusammen,

ich habe ein eigenes Plugin geschrieben, und beim Speichern einer der Entitäten im Backend (also in der save-Funktion des Backend-Controllers) füge ich immer eine neue Url zur RewriteTable hinzu (bzw. update diese). Das mache ich über 

 Shopware()-\>Modules()-\>RewriteTable()-\>sInsertUrl($orgPath, $path);

Das Problem ist nur, dass dabei folgender Fehler auftritt:

PHP Fatal error:  Call to a member function getId() on null in […]/engine/Shopware/Core/sRewriteTable.php on line 710

Was an folgender Zeile liegt:

 $update-\>execute(array( $org\_path, $path, Shopware()-\>Shop()-\>getId() ));

Also gibt Shopware()->Shop() null zurück. Weiß jemand woran das liegen kann und wie ich das fixen kann?

Vielen Dank für eure Hilfe!
Beste Grüße Tim

Hi Tim,

im Backend hast du keinen Shop Context. Daher gibt Shopware()->Shop() auch kein Objekt zurück. 

Falls du aber zwigend einen Shop Context brauchst, musst du diesen manuell erstellen. 

$repository = Shopware()->Container()->get('models')->getRepository('Shopware\Models\Shop\Shop');
$shop = $repository->getActiveById($shopId);
$shop->registerResources();

Das sollte dein Problem beheben.

Viele Grüße aus Schöppingen

cool Michael Telgmann

1 „Gefällt mir“

Hallo Leute,

ich hab nun auch ein Problem bei dem Shopware()->Shop() Null zurückgibt.

Mein Szenario:

Ich hab einen replace Hook und zwar folgenden

Shopware_Controllers_Backend_Order::createDocumentAction::replace

Diesen hab ich eigentlich um die createDocument zu ersetzen welche aber private ist. Meine createDocument erzeugt Dokumente vom Typ Document welcher eine Erweiterung von Shopware_Components_Document ist. In dieser Erweiterung ersetze ich die Methoden initDocument() sowie saveDocument(). Soweit alles gut und funktioniert.

Mein Problem tritt dann in der Methode assignValue4x() auf, und zwar beim initialisieren von sArticles, also in der Zeile

$articleModule = Shopware()->Modules()->Articles();

Der Konstruktor von sArticles ruft Shopware()->Shop()->getCategory() auf was sobald ich meine erweiterte Document Klasse verwende schief läuft:

Fatal error: Call to a member function getCategory() on null in C:\MAMP\htdocs\dev1\engine\Shopware\Core\sArticles.php on line 189
503 Service Unavailable

Warum zerlegt es mich sobald ich meine Document verwende und warum funktionierts wenn ich die ursprüngliche Shopware_Components_Document verwende?

Würde mich über sachdienliche Hinweise jeglicher Art sehr freuen.

Vielen Dank und Beste Grüße,

Martin