[Frage] routeEnhancers mit Default Arguments [Gelöst]

  • Nesfiran Nesfiran
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    07. 08. 2019, 14:42

    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.

    [code]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
    [/code]

  • Nesfiran Nesfiran
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    09. 08. 2019, 09:32 - Lösung

    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'} }[/code]


  • 1
  • Teisinger Teisinger
    Jedi-Meister
    0 x
    391 Beiträge
    27 Hilfreiche Beiträge
    07. 08. 2019, 19:04

    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.

    https://github.com/groundstack-org

  • Nesfiran Nesfiran
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    08. 08. 2019, 09:10

    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.

  • Teisinger Teisinger
    Jedi-Meister
    0 x
    391 Beiträge
    27 Hilfreiche Beiträge
    08. 08. 2019, 14:39

    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?

    https://github.com/groundstack-org

  • Nesfiran Nesfiran
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    08. 08. 2019, 17:28

    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.

  • Nesfiran Nesfiran
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    09. 08. 2019, 09:32

    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'} }[/code]

  • Teisinger Teisinger
    Jedi-Meister
    0 x
    391 Beiträge
    27 Hilfreiche Beiträge
    09. 08. 2019, 14:50

    Cool, gut zu wissen. :)

    Leider erklärt es noch nicht wieso das "default" bei dir nicht klappt...
    Naja Hauptsache du hast eine Lösung.

    https://github.com/groundstack-org

  • 1