API Resourcen als Service übergeben (services.xml)

Hallo!

Ich benutze aktuell noch auf dem ursprünglichen Weg die lokalen API Resourcen, würde aber gerne für ein paar Projekte komplett mit Services arbeiten, und dementsprechend auch die API Resourcen definiert übergeben - ohne lokaler Instanziierung … das klappt bisher leider nicht.
Sehe ich richtig, dass durch die shared Anweisung hier es gar nicht vorgesehen ist, die API Resourcen als Service verwenden zu können?

Zu finden unter https://github.com/shopware/shopware/blob/e24203eb02e8a3ead332b6ce3ff900449ef750ee/engine/Shopware/Components/DependencyInjection/services.xml#L611

Wenn ich zum Beispiel die Artikel Resource übergebe und darauf eine getOne ausführe, knallt folgendes:

Fatal error: Uncaught Error: Call to a member function createQueryBuilder() on null in / .../engine/Shopware/Components/Api/Resource/Article.php:137 Stack trace: #0 / .../custom/plugins/FooPlugin/Services/FooService.php(60): Shopware\Components\Api\Resource\Article->getOne(1) #1 / .../var/cache/production_201710241020/proxies/ShopwareProduction3e2dbe9788b3fea2af3b58d75a69d13c12705d89ProjectContainer.php(3502): FooPlugin\Services\FooService->__construct(Object(Shopware\Components\Logger), Object(Shopware\Components\Api\Resource\Article)) #2 / .../vendor/symfony/dependency-injection/Container.php(304): ShopwareProduction3e2dbe9788b3fea2af3b58d75a69d13c12705d89ProjectContainer->getFooPlugin_Services_FooServiceService() #3 / .../engine/Shopware/Components/DependencyInjection/Container.php(217): Symfony\Component\ in / .../engine/Shopware/Components/Api/Resource/Article.php on line 137

Die Auszeichnung erfolgt:

Freue mich über Feedback!
Niklas

Die API Resource braucht den ModelManager. Den kriegt er zurzeit nicht selbst rein via DI. Dieser wird erst mit 5.6 automatisch gesetzt. BIs dahin musst du den selber setzen mit setManager

1 Like

Ah! Danke Dir! Klappt jetzt wunderbar, genial  Wearing-Sunglasses