---
title: "Dependency Injection"
url: "https://www.typo3.net/d/128694-dependency-injection"
source: "typo3.net"
tags: ["Extensions","Extbase","Frage"]
created: "2023-06-23"
last_reply: "2023-06-26"
replies: 1
solved: false
page: 1
pages: 1
lang: "de"
---

# Dependency Injection

Extensions › Extbase · 1 Antwort · gestartet 2023-06-23

## Eröffnungsbeitrag

**discoebbe** · 2023-06-23 · [Beitrag #1](https://www.typo3.net/d/128694-dependency-injection/1)

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

```yaml
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:

```php
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".

## Antworten

### [#2](https://www.typo3.net/d/128694-dependency-injection/2) · discoebbe · 2023-06-26

Problem gelöst: für alle die es auch mal betrifft:

In der Services.yaml des Connectors habe ich zusätzlich das Repository des Shops, das ich per Constructor Injection in meinem Connector Controller brauche auf public:true gestellt. Und plötzlich geht die Dependency Injection wie erwartet.

---

Quelle: „Dependency Injection“, typo3.net, https://www.typo3.net/d/128694-dependency-injection
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
