Moin,
ich versuche nun schon seit einiger Zeit eine Erweiterung mit lesbaren Url´s zu versehen.
Das klappt auch soweit ganz gut nur wenn mehere Argumente übergeben werden und eines davon nicht vorhanden ist. Generiert das Typo3 gar keine Url´s mehr.
Gibt es keine möglichkeit default Werte für Argumente in einer Extbase Extension mit anzugeben so dass das Argument ignoriert wird?
Die Defaults aus der Dokuemntation haben leider null auswirkungen.
routeEnhancers:
PeferenzenDetail:
type: Extbase
limitToPages: [566]
extension: CcAnlagenbau
plugin: Anlagenbau
routes:
- { routePath: '/{reference_title}/{benefits_title}', _controller: 'Referenzen::show', _arguments: {'reference_title': 'referenzen', 'benefits_title': 'leistungen'} }
defaultController: 'Referenzen::list'
defaults:
page: '0'
benefits_title: ''
aspects:
reference_title:
type: PersistedAliasMapper
tableName: tx_ccanlagenbau_domain_model_referenzen
routeFieldName: slug
benefits_title:
type: PersistedAliasMapper
tableName: tx_ccanlagenbau_domain_model_leistungen
routeFieldName: slug
mit defaults werden die Argumente nicht ignoriert, die defaults werden gesetzt falls ein Argument nicht übergeben wurde.
Sollte eigentlich schon funktionieren - aber yaml ist da bescheuert, musst aufpassen das du ja die richtige Einrückung hast etc.
Genau das wollte ich bezwecken, hatte mich nicht präzise ausgedrückt.
Das übergebene Argument ist nicht vorhanden und dann soll der Default Wert dafür sorgen das die URL´s trotzdem korrekt erzeugt werden.
benefits_title ist bei dir oben im default leer - macht für mich im Moment keinen Sinn das dann zu definieren.
Was kommt denn dann für eine URL? Fehlermeldung?
Eine Fehlermeldung gibt es nicht, es wird einfach der Link mit action und controller generiert statt mit der lesbaren Variante.
Ich hatte die Hoffnung dass das Argument Leistungen ignoriert wird wenn man dies mit Default = '' deklariert, dem scheint nicht so.
Das Problem was ich habe ist das ich eine Detailseite habe mit Referenzen einmal mit und ohne Kategoriesierung.
Normal: /referenzen/referenz-1
Mit Kategorie: /referenzen/leistungen/referenz-1
Sonst muss ich die Extension um eine weitere Action ergänzen dann kann ich auch zwei verschiedene Konfigurationen benutzen.
Da ich mich jetzt seit einiger Zeit mit den Routes von Typo3 beschäftigen durfte. Hier die Lösung vielleicht hilft es jemanden etwas Zeit zu sparen.
Wenn man eine Detailseite hat für sein Objekt und mehreren Parameter die sich auf die URL auswirken sollen kommt es zwangsläufig dazu das einige Argumente nicht mehr Vorhanden sind.
Da man pro Action aber nur 1 Konfiguration hat kommt es hier zu Problemen.
Die Lösung ist einfach für jeden Fall seperates Routes definieren in der gleichen Konfiguration der Action.
Für mein obiges Beispiel würde die wie folgt aussehen.
- { routePath: '/{reference_title}', _controller: 'Referenzen::show', _arguments: {'reference_title': 'referenzen'} }
- { routePath: '/{benefits_title}/{reference_title}', _controller: 'Referenzen::show', _arguments: {'reference_title': 'referenzen', 'benefits_title': 'leistungen'} }
Cool, gut zu wissen. 🙂
Leider erklärt es noch nicht wieso das "default" bei dir nicht klappt...
Naja Hauptsache du hast eine Lösung.