Hi.
Folgendes Setup: Typo3 11.5.28
Es gibt eine "Shop Extension" die für Daten Model "Product" ein Repository hat. Das funtktioniert innerhalb der Shop Extension wunderbar.
Weiterhin gibt es eine Extension "Connector" die via Composer installiert wurde. Diese funktioniert an und für sich auch wie sie sollte und verbindet den Shop mit der Warenwirtschaft des Kunden.
Nun zum Problem:
In der Connector Extension brauche ich das Product Repository aus der Shop Extension. Mittels ObjectManager kann ich mir das leicht verfügbar machen, allerdings ist der ObjectManager deprecated.
Daher will ich des ProductRepository gern über Dependency Injection (constructor) einbinden.
Dazu habe ich für den Connector einen Services.yaml erstellt. Diese sieht so aus
services:
_defaults:
autowire: true
autoconfigure: true
public: false
Jtl\Connector\Kerzenprofi\:
resource: '../src/*'
Jtl\Connector\Kerzenprofi\Controller\DebugUtility:
arguments:
$productRepository: '@\Hc3\Kpshop\Domain\Repository\ProductRepository'
Mein Controller "DebugUtility" sieht so aus:
namespace Jtl\Connector\Kerzenprofi\Controller;
use TYPO3\CMS\Core\Utility\GeneralUtility;
class DebugUtility extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController{
/**
* productRepository
*
* @var \Hc3\Kpshop\Domain\Repository\ProductRepository
*/
protected $productRepository;
/**
* @param \Hc3\Kpshop\Domain\Repository\ProductRepository $productRepository
*/
public function __construct(
\Hc3\Kpshop\Domain\Repository\ProductRepository $productRepository
)
{
$this->productRepository = $productRepository;
}
...
}
Aus meiner Sicht alles korrekt. Aber ich bekomme im Installtool immer den Fehler:
The service "Jtl\Connector\Kerzenprofi\Controller\DebugUtility" has a dependency on a non-existent service "\Hc3\Kpshop\Domain\Repository\ProductRepository".