# API-Controller Registrierung in service.xml

**URL:** https://forum.shopware.com/t/api-controller-registrierung-in-service-xml/65784
**Category:** Programmierung
**Created:** [26. März 2020 um 14:29 UTC](https://forum.shopware.com/t/api-controller-registrierung-in-service-xml/65784 "2020-03-26T14:29:11Z")
**Posts on this page:** 12
**Page:** 1

<div class="post-metadata">

### Author: ![Frank\_2812](https://avatars.discourse-cdn.com/v4/letter/f/b19c9b/32.png) [@Frank\_2812](https://forum.shopware.com/u/Frank_2812)
#### Post date: [26. März 2020 um 14:29 UTC](https://forum.shopware.com/t/api-controller-registrierung-in-service-xml/65784/1 "2020-03-26T14:29:11Z")

</div>

Hallo,

ich möchte im Plugin einen eigenen REST API Endpoint erstellen. Der Controller&nbsp;sieht momentan folgendermaßen aus:

```
/**
 * Class Shopware_Controllers_Api_TransArticle
 */
class Shopware_Controllers_Api_TransArticle extends Shopware_Controllers_Api_Rest
{
    /**
     * @var TransArticle
     */
    protected $resource;

    /*
    public function init()
    {
        $this->resource = \Shopware\Components\Api\Manager::getResource('TransArticle');
    }
    */

    /**
     * @param TransArticle $resource
     */
    public function __construct(
        TransArticle $resource
    )
    {
        $this->resource = $resource;
    }

    /**
     * Get one TransArticle
     *
     * GET /api/TransArticle/{id}
     */
    public function getAction()
    {
        $id = $this->Request()->getParam('id');
        /** @var \IbrArticleTransfer\Models\TransArticle $trans_article */
        $trans_article = $this->resource->getOne($id);

        $this->View()->assign(['success' => true, 'data' => $trans_article]);
    }

}

```

Da das „Besorgen“ der Resource über \_\Shopware\Components\Api\Manager::getResource&nbsp;\_deprecated ist, möchte ich dass über die service.xml erledigen. Dabei hänge ich irgendwie an einem blöden Syntax-Problem: Die Klasse des Controllers lautet _Shopware\_Controllers\_Api\_TransArticle​&nbsp;_, abweichend vom php Dateinamen /Controllers/Api/TransArticle.php. Wie müsste der Eintrag in der service.xml aussehen?

funktioniert natürlich nicht. Hat jemand einen Tip für mich ?

---

<div class="post-metadata">

### Author: ![vanwittlaer](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/vanwittlaer/32/8499_2.png) [@vanwittlaer](https://forum.shopware.com/u/vanwittlaer)
#### Post date: [27. März 2020 um 13:21 UTC](https://forum.shopware.com/t/api-controller-registrierung-in-service-xml/65784/2 "2020-03-27T13:21:54Z")

</div>

Hast Du es mal mit&nbsp;

probiert?

Viel Erfolg,

Geert

---

<div class="post-metadata">

### Author: ![Frank\_2812](https://avatars.discourse-cdn.com/v4/letter/f/b19c9b/32.png) [@Frank\_2812](https://forum.shopware.com/u/Frank_2812)
#### Post date: [27. März 2020 um 13:58 UTC](https://forum.shopware.com/t/api-controller-registrierung-in-service-xml/65784/3 "2020-03-27T13:58:02Z")

</div>

Hallo Geert,

danke für den Tip. Sieht auch logisch aus, klappt aber leider noch nicht. Der Eintrag sieht jetzt so aus:

Fehlt da ev. noch ein Tag? Mit \_„shopware.event\_subscriber“ &nbsp;\_klappt es nicht.

Viele Grüße, Frank

---

<div class="post-metadata">

### Author: ![Frank\_2812](https://avatars.discourse-cdn.com/v4/letter/f/b19c9b/32.png) [@Frank\_2812](https://forum.shopware.com/u/Frank_2812)
#### Post date: [27. März 2020 um 14:16 UTC](https://forum.shopware.com/t/api-controller-registrierung-in-service-xml/65784/4 "2020-03-27T14:16:06Z")

</div>

… irgendwie kommt der Parameter für den Konstruktor nicht durch:

```
PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function Shopware_Controllers_Api_TransArticle::__construct(), 0 passed in ...

```

&nbsp;

---

<div class="post-metadata">

### Author: ![vanwittlaer](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/vanwittlaer/32/8499_2.png) [@vanwittlaer](https://forum.shopware.com/u/vanwittlaer)
#### Post date: [27. März 2020 um 14:22 UTC](https://forum.shopware.com/t/api-controller-registrierung-in-service-xml/65784/5 "2020-03-27T14:22:29Z")

</div>

Hast Du Version 5.6 und machst Du das nach diesem Link&nbsp;[https://developers.shopware.com/developers-guide/shopware-5-upgrade-guide-for-developers/](https://developers.shopware.com/developers-guide/shopware-5-upgrade-guide-for-developers/)&nbsp;?

Bis 5.5 konntest Du Controller gar nicht in der services.xml definieren.

Grüße,

Geert

---

<div class="post-metadata">

### Author: ![Frank\_2812](https://avatars.discourse-cdn.com/v4/letter/f/b19c9b/32.png) [@Frank\_2812](https://forum.shopware.com/u/Frank_2812)
#### Post date: [27. März 2020 um 14:31 UTC](https://forum.shopware.com/t/api-controller-registrierung-in-service-xml/65784/6 "2020-03-27T14:31:33Z")

</div>

… habe Version 5.6.6. Es scheitert vermutlich an der Argumentdefinition in der service.xml? Hatte zuletzt folgendes ausprobiert, was aber auch nicht klappt:

Der obere Service ist die Registrierung der Ressource, und der untere die Controller Registrierung mit dem Parameter für den Konstruktor:

```
/*
    public function init()
    {
        // deprecated with 5.6, will be removed with 5.8. Inject the resource instead!
        $this->resource = \Shopware\Components\Api\Manager::getResource('TransArticle');
    }
    */

    /**
     * @param TransArticle $resource
     */
    public function __construct(
        TransArticle $resource
    )
    {
        $this->resource = $resource;
    }

```

&nbsp;

---

<div class="post-metadata">

### Author: ![Frank\_2812](https://avatars.discourse-cdn.com/v4/letter/f/b19c9b/32.png) [@Frank\_2812](https://forum.shopware.com/u/Frank_2812)
#### Post date: [27. März 2020 um 14:34 UTC](https://forum.shopware.com/t/api-controller-registrierung-in-service-xml/65784/7 "2020-03-27T14:34:58Z")

</div>

Okay. Ich sehe gerade in Deinem Link den Tag, der fehlt:

Mal sehen, ob ich damit hinkomme.

Vielen Dank!

---

<div class="post-metadata">

### Author: ![Frank\_2812](https://avatars.discourse-cdn.com/v4/letter/f/b19c9b/32.png) [@Frank\_2812](https://forum.shopware.com/u/Frank_2812)
#### Post date: [27. März 2020 um 16:36 UTC](https://forum.shopware.com/t/api-controller-registrierung-in-service-xml/65784/8 "2020-03-27T16:36:28Z")

</div>

… ich habe mal den Controller, nach dem Vorbild aus dem Link, umgebaut. Leider funktioniert er danach nicht mehr. Ich bin gerade auch nicht sicher, ob das dort gezeigte Beispiel auf einen API-Controller anwendbar ist???

Vielleicht geht es gar nicht, einen eigenen API-Controller als Service zu registrieren?&nbsp;Damit wäre das “Injecten” der Resource nicht möglich. Frage mich, wie das dann zukünftig gehen soll, wenn \_\Shopware\Components\Api\Manager::getResource()&nbsp;\_nicht mehr funktioniert.

Hat jemand noch eine Idee, bin gerade total ratlos???

---

<div class="post-metadata">

### Author: ![Aurentius](https://avatars.discourse-cdn.com/v4/letter/a/f19dbf/32.png) [@Aurentius](https://forum.shopware.com/u/Aurentius)
#### Post date: [27. Mai 2020 um 07:04 UTC](https://forum.shopware.com/t/api-controller-registrierung-in-service-xml/65784/9 "2020-05-27T07:04:07Z")

</div>

H‍allo @Frank\_2812‍ ,

bist du hier noch zu einer Lösung gekommen? Stehe aktuell vor der selben Fragen.&nbsp;

---

<div class="post-metadata">

### Author: ![Frank\_2812](https://avatars.discourse-cdn.com/v4/letter/f/b19c9b/32.png) [@Frank\_2812](https://forum.shopware.com/u/Frank_2812)
#### Post date: [27. Mai 2020 um 14:29 UTC](https://forum.shopware.com/t/api-controller-registrierung-in-service-xml/65784/10 "2020-05-27T14:29:47Z")

</div>

Ich habe bisher keine Lösung dazu gefunden. Da&nbsp;_\Shopware\Components\Api\Manager::getResource_ bisher noch funktioniert, ist es kein wirkliches Problem. Falls Du aber damit weiterkommst, wäre ich natürlich auch an der Lösung interessiert!

Viele Grüße, Frank

---

<div class="post-metadata">

### Author: ![wolkenkrieger](https://avatars.discourse-cdn.com/v4/letter/w/85e7bf/32.png) [@wolkenkrieger](https://forum.shopware.com/u/wolkenkrieger)
#### Post date: [10. Februar 2021 um 16:12 UTC](https://forum.shopware.com/t/api-controller-registrierung-in-service-xml/65784/11 "2021-02-10T16:12:26Z")

</div>

Moin 🙂

Gibt es hier inzwischen eine Lösung? Ich stehe gerade vor demselben Problem und würde ungern eine Funktion nutzen müssen, die absehbar zu Problemen führen wird.

Danke 🙂

---

<div class="post-metadata">

### Author: ![chde123](https://avatars.discourse-cdn.com/v4/letter/c/258eb7/32.png) [@chde123](https://forum.shopware.com/u/chde123)
#### Post date: [29. August 2024 um 09:05 UTC](https://forum.shopware.com/t/api-controller-registrierung-in-service-xml/65784/12 "2024-08-29T09:05:00Z")

</div>

Hallo,

hat jemand dazu noch einen Tipp oder ein Beispiel wie ein Controller erfolgreich über die services.xml eingebunden wird?  
Ich bekomme immer Class „Shopware\_Controllers\_Api\_Hello“ used for service „shopware\_controllers\_api\_hello“ cannot be found.

wenn ich es so eingebe

```auto
<service id="shopware_controllers_api_hello" class="Shopware_Controllers_Api_Hello">
    <argument type="service" id="dbal_connection"/>
    <tag name="shopware.controller" module="api" controller="Hello"/>
</service>

```

Der Controller liegt im Plugin unter Controllers/Api/Hello.php und heißt dort Shopware\_Controllers\_Api\_Hello
