# Gelöst: Eigener Controller - No route found

**URL:** <https://forum.shopware.com/t/geloest-eigener-controller-no-route-found/92730>\
**Category:** Shopware 6 (German)\
**Tags:** programming\
**Created:** [2. Februar 2022 um 14:39 UTC](https://forum.shopware.com/t/geloest-eigener-controller-no-route-found/92730 "2022-02-02T14:39:58Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [2. Februar 2022 um 14:39 UTC](https://forum.shopware.com/t/geloest-eigener-controller-no-route-found/92730/1 "2022-02-02T14:39:58Z")

</div>

Ich scheitere auch beim Anlegen eines eigenen Controllers. Mein Test sieht hierbei wie folgt aus:

TestPlugin/src/Controller/ExampleController.php

```auto
<?php

namespace TestPlugin\Controller;

use Exception;

use Shopware\Storefront\Controller\StorefrontController;

use Doctrine\DBAL\Connection;

class ExampleController extends StorefrontController
{

    public function __construct()
    {
    }

}

```

Ratlose Versuche in der routes.xml:

```
<import resource="../../***/*Controller.php" type="annotation"/>

```

geht nicht

```
<import resource="../../Controller/*Controller.php" type="annotation"/>

```

geht nicht

```
<import resource="../../***/*Controller" type="annotation"/>

```

geht nicht

Beim Aufruf von Controller: No route found

Ich sehe es einfach nicht, was nicht stimmt.

---

<div class="post-metadata">

**Author:** ![FSA](https://avatars.discourse-cdn.com/v4/letter/f/e9a140/32.png) [@FSA](https://forum.shopware.com/u/FSA)\
**Post date:** [2. Februar 2022 um 14:51 UTC](https://forum.shopware.com/t/geloest-eigener-controller-no-route-found/92730/2 "2022-02-02T14:51:08Z")

</div>

Controller liegt nach Convention unter DEINPLUGIN/src/Core/Api/DEINPLUGINController.php

dementsprechend ist der Namespace des Controllers

```auto
<?php

declare(strict_types=1);

namespace DEINPLUGIN\Core\Api;

```

Unter

DEINPLUGIN/src/Resources/routes.xml

sollte die RouteConfig liegen mit folgendem Inhalt:

```auto
<?xml version="1.0" encoding="UTF-8" ?>
<routes xmlns="http://symfony.com/schema/routing"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://symfony.com/schema/routing
        http://symfony.com/schema/routing/routing-1.0.xsd">

    <import resource="../../**/Api/*Controller.php" type="annotation" />
</routes>

```

Diese Datei ist unter Einhaltung der Conventionen immer gleich.

Zuletzt musst du deinen Controller noch als Service erkenntlich machen in der

DEINPLUGIN/src/Resources/services.xml

```auto
<service id="DEINPLUGIN\Core\Api\DEINPLUGINController" public="true">
            <call method="setContainer">
                <argument type="service" id="service_container" />
            </call>
</service>

```

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [2. Februar 2022 um 14:54 UTC](https://forum.shopware.com/t/geloest-eigener-controller-no-route-found/92730/3 "2022-02-02T14:54:25Z")

</div>

Ok, muss ich mal testen. In der Doku steht das aber etwas anders:

> **[Add custom controller](https://developer.shopware.com/docs/guides/plugins/plugins/storefront/add-custom-controller)**

---

<div class="post-metadata">

**Author:** ![FSA](https://avatars.discourse-cdn.com/v4/letter/f/e9a140/32.png) [@FSA](https://forum.shopware.com/u/FSA)\
**Post date:** [2. Februar 2022 um 14:56 UTC](https://forum.shopware.com/t/geloest-eigener-controller-no-route-found/92730/4 "2022-02-02T14:56:32Z")

</div>

ok vergiss meine Antwort, ich habe nur Controller gelesen, meine Antwort würde sich auf einen AbstractController beziehen für eine API Route, sorry^^

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [2. Februar 2022 um 14:57 UTC](https://forum.shopware.com/t/geloest-eigener-controller-no-route-found/92730/5 "2022-02-02T14:57:52Z")

</div>

Wollt nur ein eigenen Plugin-Controller fürs Frontend 🙂

---

<div class="post-metadata">

**Author:** ![FSA](https://avatars.discourse-cdn.com/v4/letter/f/e9a140/32.png) [@FSA](https://forum.shopware.com/u/FSA)\
**Post date:** [2. Februar 2022 um 14:58 UTC](https://forum.shopware.com/t/geloest-eigener-controller-no-route-found/92730/6 "2022-02-02T14:58:23Z")

</div>

fear not, ich hab auch dafür ein Beispiel auf Lager

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [2. Februar 2022 um 14:58 UTC](https://forum.shopware.com/t/geloest-eigener-controller-no-route-found/92730/7 "2022-02-02T14:58:57Z")

</div>

kein Problem, ich suche weiter 🙂

---

<div class="post-metadata">

**Author:** ![FSA](https://avatars.discourse-cdn.com/v4/letter/f/e9a140/32.png) [@FSA](https://forum.shopware.com/u/FSA)\
**Post date:** [2. Februar 2022 um 15:03 UTC](https://forum.shopware.com/t/geloest-eigener-controller-no-route-found/92730/8 "2022-02-02T15:03:24Z")

</div>

Ich beziehe mich hier wieder auf die mir bekannten Namenskonventionen

DEINPLUGIN/src/Storefront/Controller/DEINPLUGINController.php

```auto
<?php

declare(strict_types=1);

namespace DEINPLUGIN\Storefront\Controller;

use ...

/**
 * @RouteScope(scopes={"storefront"})
 */
class DEINPLUGINController extends StorefrontController

```

DEINPLUGIN/src/Resources/config/routes.xml

```auto
<?xml version="1.0" encoding="UTF-8" ?>
<routes xmlns="http://symfony.com/schema/routing"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://symfony.com/schema/routing
        https://symfony.com/schema/routing/routing-1.0.xsd">

    <import resource="../../**/Storefront/Controller/*Controller.php" type="annotation" />
    <import resource="../../**/Api/*Controller.php" type="annotation" />
</routes>

```

Um den Service zu registrieren (das ist der einzige Punkt den du in deiner Frage nicht aufgeführt hast, vielleicht haperts hier?)

```auto
<!-- // storefront controller -->
        <service id="DEINPLUGIN\Storefront\Controller\DEINPLUGINController" public="true">
            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
</service>

```

---

<div class="post-metadata">

**Author:** ![mkar](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/mkar/32/14807_2.png) [@mkar](https://forum.shopware.com/u/mkar)\
**Post date:** [2. Februar 2022 um 22:50 UTC](https://forum.shopware.com/t/geloest-eigener-controller-no-route-found/92730/9 "2022-02-02T22:50:06Z")

</div>

Im Controller müsste der RouteScope definiert werden und bei den Methoden/für die Routen müsste entsprechend die Route Annotation verwendet werden.

Der Pfad der Resource der Controller in deiner routes.xml müsste noch angepasst werden. Je Nachdem wo deine routes.xml liegt, müsstest du den Pfad der Resource anpassen.  
Sollte die routes.xml in TestPlugin/src/Resources/config/ liegen, dann müsste der Import folgendermaßen sein:

```auto
<import resource="../../Controller/*Controller.php" type="annotation" />

```

Der Controller muss natürlich noch in der services.xml registriert werden.

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [3. Februar 2022 um 07:49 UTC](https://forum.shopware.com/t/geloest-eigener-controller-no-route-found/92730/10 "2022-02-03T07:49:20Z")

</div>

Vielen Dank für eure Antworten. Ich gehe das heute noch mal durch.

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [3. Februar 2022 um 09:09 UTC](https://forum.shopware.com/t/geloest-eigener-controller-no-route-found/92730/11 "2022-02-03T09:09:56Z")

</div>

Ne, mein Frontend Test-Controller bekomme ich nicht zum laufen ☹

Mein Aufbau sieht jetzt so aus:

TestPlugin\Resources\config\routes.xml  
TestPlugin\Resources\config\services.xml  
TestPlugin\Storefront\Controller\ExampleController.php

Eintrag routes.xml

```auto
<import resource="../../Storefront/Controller/*Controller.php" type="annotation" />

```

Eintrag services.xml

```auto
 <services>
    <service id="TestPlugin\Storefront\Controller\ExampleController" public="true">
      <call method="setContainer">
      <argument type="service" id="service_container"/>
      </call>
    </service>
 </services>

```

Der Test-Controller ExampleController.php

```auto
<?php

namespace TestPlugin\Storefront\Controller;

use Exception;

use Shopware\Storefront\Controller\StorefrontController;

use Doctrine\DBAL\Connection;

class ExampleController extends StorefrontController
{

    public function __construct()
    {
    }

}

```

Fehler:

```auto
No route found for "GET https://www...de/example/"

```

Für mich sieht das alles korrekt aus. Mehr brauch es doch eigentlich nicht.

---

<div class="post-metadata">

**Author:** ![EikeBrandtWarneke](https://avatars.discourse-cdn.com/v4/letter/e/cdc98d/32.png) [@EikeBrandtWarneke](https://forum.shopware.com/u/EikeBrandtWarneke)\
**Post date:** [3. Februar 2022 um 11:10 UTC](https://forum.shopware.com/t/geloest-eigener-controller-no-route-found/92730/12 "2022-02-03T11:10:36Z")

</div>

Du hast weder einen scope, noch eine Methode mit einer route definiert. Ein Beispiel wurde doch bereits verlinkt?!

> **[Add custom controller](https://developer.shopware.com/docs/guides/plugins/plugins/storefront/add-custom-controller)**

Viele Grüße

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [3. Februar 2022 um 11:49 UTC](https://forum.shopware.com/t/geloest-eigener-controller-no-route-found/92730/13 "2022-02-03T11:49:12Z")

</div>

Ah Mensch, komplett übersehen. Jetzt geht alles 🙂 Vielen Dank für die Hilfe!!!

---

<div class="post-metadata">

**Author:** ![daslicht](https://avatars.discourse-cdn.com/v4/letter/d/b5ac83/32.png) [@daslicht](https://forum.shopware.com/u/daslicht)\
**Post date:** [14. Februar 2023 um 11:46 UTC](https://forum.shopware.com/t/geloest-eigener-controller-no-route-found/92730/14 "2023-02-14T11:46:49Z")

</div>

Hallo,  
ich habe ein ähnliches Problem hier mit meinem lokalen shopware test projekt  
Schaut mal _bitte_ ob Ihr seht was da fehlt oder fehlerhaft ist.

> **[shopware\_test/src at main · daslicht/shopware\_test](https://github.com/daslicht/shopware_test/tree/main/src)**
>
> Contribute to daslicht/shopware\_test development by creating an account on GitHub.

## Jedes mal bekomme ich `No route found for "GET http://shopware.test/example/"`

ich habe jest in der console nochmal  
`php bin/console plugin:refresh ` ausgeführt, jetzt bekomem ich folgende Meldung:  
`Unable to load template "storefront/page/example.html.twig". (Looked into: SoundDesign, Framework, Administration, Elasticsearch, Profiling, Storefront)`

* * *

ich hoffe es ist OK das ich hier in disem Thread schreibe?

---

<div class="post-metadata">

**Author:** ![Max\_Shop](https://avatars.discourse-cdn.com/v4/letter/m/58f4c7/32.png) [@Max\_Shop](https://forum.shopware.com/u/Max_Shop)\
**Post date:** [14. Februar 2023 um 11:59 UTC](https://forum.shopware.com/t/geloest-eigener-controller-no-route-found/92730/15 "2023-02-14T11:59:54Z")

</div>

Hast du den Fehler selbst gefunden? Deine Datei heißt index.html.twig und nicht example.html.twig

---

<div class="post-metadata">

**Author:** ![daslicht](https://avatars.discourse-cdn.com/v4/letter/d/b5ac83/32.png) [@daslicht](https://forum.shopware.com/u/daslicht)\
**Post date:** [14. Februar 2023 um 12:21 UTC](https://forum.shopware.com/t/geloest-eigener-controller-no-route-found/92730/16 "2023-02-14T12:21:14Z")

</div>

das und das ich in der console das plugin neu refreshen musste.  
(php bin/console plugin:refresh)
