Zum Inhalt springen

Routing Extebase. Ich verstehe es nicht

Erstellt am 15. Juni 2021 · 3 Antworten · letzte Antwort am 23. Juni 2021

Tags: URLs & Routing, Frage

tom_meier ·

Hallo,

ich habe eine Extabse Extension die aus einer DB Daten als Facetten suche abbildet. Ich möchte nun das routing von TYPO3 10 nutzen. Allerdings bekomme ich nicht die korrekte URL.

Beispiel:

in der URL steht:

https://localhost/fahrzeugsuche?tx_carportal_carlist%5Baction%5D=list&tx_carportal_carlist%5Bbrand%5D=AUDI&tx_carportal_carlist%5Bcontroller%5D=Car&tx_carportal_carlist%5Bdetailsuche%5D=0&tx_carportal_carlist%5Btop%5D=0&cHash=bb06b129829b8cd35ac034973ce7e799

das bekomme ich mit:

- routePath: '/marke/{brand}/{top}/{detailsuche}'
_controller: 'Car::list'
_arguments:
brand: brand
requirements:
top: '\d+'
detailsuche: '\d+'

zu:

https://localhost/angebote-deals/fahrzeugsuche/marke/AUDI/0/0?cHash=b65eaee3446938520b532dfbd90d617a

Das scheint nicht genau genug zu sein, da der chash noch drin ist.

sowie für das Modell:

- routePath: '/{baureihe}'
_controller: 'Car::list'
_arguments:
baureihe: baureihe
defaults:
top: ''
detailsuche: ''

ABER:

es gibt weitere Parameter die dynamisch dazu kommen können:

Z.B das Modell

Wenn ich die Marke gewählt habe und nun ein Modell auswählen möchte, ist die Marke weg bzw. taucht in der URL nicht mehr auf. Ohne routing ist sie in der Url vorhanden.

Warum wird die Marke nicht bei Modell auch mit reingenommen?

Normalerweise müsste dort stehen

https://localhost/angebote-deals/fahrzeugsuche/marke/AUDI/A1/0/0?cHash=b65eaee3446938520b532dfbd90d617a

steht aber nur

https://localhost/angebote-deals/fahrzeugsuche/A1/0/0?cHash=b65eaee3446938520b532dfbd90d617a

Vielen Dank für eure Hilfe
Tom

Teisinger ·

Wenn du jemanden gefunden hast der dir das tatsächlich richtig und verständlich erklären kann - gib bescheid...
Auch wenn ich sowas jetzt schon öfter machen musste, im Endeffekt ist es immer noch try and error... bei den etwas komplexeren...

tom_meier ·

Aber wo setzt du denn an? Wo kann man das einigermaßen debuggen ? Es gibt nur News Beispiele die einen nicht wirklich helfen.

livedesign24 ·

Moin @tom_meier,

dein RoutePath müsste für dein geschildertes Problem unten wahrscheinlich auch eher wie folgt aussehen:

- routePath: '/marke/{brand}/{baureihe}'

Dadurch das du '/{baureihe}' als Pfad angibst, überschreibt er dir ausgehend von der Base-URL eben wieder alles. Entsprechend musst du die Argumente noch erweitern, also Brand hinzufügen.

Wenn du Automarken hast die mit Leerzeichen getrennt sind, z. B. "Alfa Romeo" setzt er dir die URL zwar und sie lässt sich aufrufen (auch mit Leerzeichen in der URL), aber hier würde ich eventuell mit den "Aspects" arbeiten und auf den "Slug" des Datensatzes zurückgreifen. Sofern du welche generierst, der macht dir dann quasi aus "Alfa Romeo" entsprechend "alfa-romeo", was als URL-Struktur etwas schöner ist.

Viele Grüße