# Controller GET Request mit Parametern funktioniert nicht wie erwünscht

**URL:** <https://forum.shopware.com/t/controller-get-request-mit-parametern-funktioniert-nicht-wie-erwuenscht/104053>\
**Category:** Programmierung\
**Tags:** programming\
**Created:** [16. Mai 2024 um 09:58 UTC](https://forum.shopware.com/t/controller-get-request-mit-parametern-funktioniert-nicht-wie-erwuenscht/104053 "2024-05-16T09:58:22Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![thomas.kipp](https://avatars.discourse-cdn.com/v4/letter/t/b5e925/32.png) [@thomas.kipp](https://forum.shopware.com/u/thomas.kipp)\
**Post date:** [16. Mai 2024 um 09:58 UTC](https://forum.shopware.com/t/controller-get-request-mit-parametern-funktioniert-nicht-wie-erwuenscht/104053/1 "2024-05-16T09:58:22Z")

</div>

Hallo, versuche folgendermaßen eine ID zu übergeben. Das funktioniert zwar, aber nicht so, wie beabsichtigt- Durch den Aufruf [https://tklustig.de/getSeoUrl/5](https://tklustig.de/getSeoUrl/5) bekomme ich die Idee. Die URL sollte allerdings so aufgerufen werden: [https://tklustig.de/getSeoUrl?id=5](https://tklustig.de/getSeoUrl?id=5)  
Wie mache ich es richtig?  
Hier der Controller Code und die service.xml

```auto
#[Route(defaults: ['_routeScope' => ['storefront']])]
class SeoUrlController extends StorefrontController
{
    #[Route(path: '/getSeoUrl/{id}', name: 'frontend.seourl', methods: ['GET','POST'])]
    public function showExample(Request $request, SalesChannelContext $context,int $id): Response
    {
        dd($id);
        return $this->renderStorefront('@WtCreateSeoUrl/storefront/page/example.html.twig', [
            'example' => 'Hello world'
        ]);
    }
}

<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
    <services>
        <service id="WtCreateSeoUrl\Storefront\Controller\SeoUrlController" public="true">
            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
            <call method="setTwig">
                <argument type="service" id="twig"/>
            </call>
        </service>

    </services>
</container>
P.S.: Durch letzteren Aufruf bekomme ich die Exception: NO ROUTE FOUND, im ersten ergibt der var_dump 5
```

---

<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:** [16. Mai 2024 um 10:38 UTC](https://forum.shopware.com/t/controller-get-request-mit-parametern-funktioniert-nicht-wie-erwuenscht/104053/2 "2024-05-16T10:38:17Z")

</div>

> **[Controller (Symfony Docs)](https://symfony.com/doc/current/controller.html#the-request-object-as-a-controller-argument)**

> **[How to Retrieve the Request from the Service Container (Symfony Docs)](https://symfony.com/doc/current/service_container/request.html)**

{id} weglassen und den Parameter über den RequestStack abfragen.

---

<div class="post-metadata">

**Author:** ![thomas.kipp](https://avatars.discourse-cdn.com/v4/letter/t/b5e925/32.png) [@thomas.kipp](https://forum.shopware.com/u/thomas.kipp)\
**Post date:** [16. Mai 2024 um 11:08 UTC](https://forum.shopware.com/t/controller-get-request-mit-parametern-funktioniert-nicht-wie-erwuenscht/104053/3 "2024-05-16T11:08:01Z")

</div>

Wenn ich Deinem Vorschlag Folge leise, wirf das folgende Exception:

 ![image](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/3X/5/a/5ac4e30d8badf7945f6eefd47ce027dd6e434cf1.png)

Wie hinterlege ich in der service.xml das controller.service\_arguments? Das bloße Anfügen durch

```auto
<argument type="service" id="service_arguments"/>

```

funktioniert jedenfalls nicht!

---

<div class="post-metadata">

**Author:** ![chamaw](https://avatars.discourse-cdn.com/v4/letter/c/b487fb/32.png) [@chamaw](https://forum.shopware.com/u/chamaw)\
**Post date:** [16. Mai 2024 um 18:02 UTC](https://forum.shopware.com/t/controller-get-request-mit-parametern-funktioniert-nicht-wie-erwuenscht/104053/4 "2024-05-16T18:02:01Z")

</div>

> [@thomas.kipp](#):
>
> `public function showExample(Request $request, SalesChannelContext $context,int $id)`

Die Signature ist nicht richtig. Und die Dependency Injection weiß nicht wie int $id eingesetzt werden soll.

Korrekt wäre :

```auto
public function showExample(Request $request, SalesChannelContext $context)

```

Jetzt muss Du die id aber noch aus dem Request holen.

```auto
$id = $request->get('id');

```

Danach kannst Du mit der ID irgendwas tun.

---

<div class="post-metadata">

**Author:** ![thomas.kipp](https://avatars.discourse-cdn.com/v4/letter/t/b5e925/32.png) [@thomas.kipp](https://forum.shopware.com/u/thomas.kipp)\
**Post date:** [16. Mai 2024 um 18:41 UTC](https://forum.shopware.com/t/controller-get-request-mit-parametern-funktioniert-nicht-wie-erwuenscht/104053/5 "2024-05-16T18:41:22Z")

</div>

Muss ich neben der Methodensignatur die Route ändern, oder nicht? Max\_shop schrieb, ich solle sie weglassen, chamwaw ging erst gar nicht darauf ein. Ich denke mal, die Route muss so bleiben, denn sonst kann der Request doch erst gar nicht korrekt verarbeitet werden,oder?

---

<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:** [16. Mai 2024 um 18:43 UTC](https://forum.shopware.com/t/controller-get-request-mit-parametern-funktioniert-nicht-wie-erwuenscht/104053/6 "2024-05-16T18:43:00Z")

</div>

Du benötigst ja irgendeine Route. Mein „weglassen“ hat sich auf das {id} bezogen, da Symfony sonst einen Wert in der URL erwartet.

Du rufst ihn aber nicht darüber ab, sondern über das $id = $request-\>get(‚id‘);

Das wäre der RoutePath: /getSeoUrl

Und das $id musst du natürlich als Parameter aus der function Deklaration entfernen, da die Variable nicht mehr in der Route, sondern erst innerhalb der Funktion erstellt wird.

---

<div class="post-metadata">

**Author:** ![chamaw](https://avatars.discourse-cdn.com/v4/letter/c/b487fb/32.png) [@chamaw](https://forum.shopware.com/u/chamaw)\
**Post date:** [17. Mai 2024 um 12:00 UTC](https://forum.shopware.com/t/controller-get-request-mit-parametern-funktioniert-nicht-wie-erwuenscht/104053/7 "2024-05-17T12:00:11Z")

</div>

Wenn Du die Url so aufrufen möchtest  
/getSeoUrl/[hier\_eine\_id]  
dann ist die Route halt /getSeoUrl/{id}

Oder halt /getSeoUrl?id=[hier\_eine\_id]  
dann wäre halt die Route nur " /getSeoUrl" die Request Parameter müssen dann NICHT in der Route angegeben werden.

Das get(‚id‘) kann dann aber beides verarbeiten.

---

<div class="post-metadata">

**Author:** ![thomas.kipp](https://avatars.discourse-cdn.com/v4/letter/t/b5e925/32.png) [@thomas.kipp](https://forum.shopware.com/u/thomas.kipp)\
**Post date:** [17. Mai 2024 um 14:29 UTC](https://forum.shopware.com/t/controller-get-request-mit-parametern-funktioniert-nicht-wie-erwuenscht/104053/8 "2024-05-17T14:29:57Z")

</div>

Vielen Dank an Max\_Shop und chamaw für Eure Posts! Sie haben mir geholfen, das Problem zu lösen!  
Euch Beiden angenehme Feiertage!

---

<div class="post-metadata">

**Author:** ![system](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/3X/2/9/29c7587ba660f00e4995d1743162782e5d6d8653.svg) [@system](https://forum.shopware.com/u/system)\
**Post date:** [16. Juni 2024 um 14:30 UTC](https://forum.shopware.com/t/controller-get-request-mit-parametern-funktioniert-nicht-wie-erwuenscht/104053/9 "2024-06-16T14:30:48Z")

</div>

Dieses Thema wurde automatisch 30 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.
