Zum Inhalt springen

PersistedAliasMapper & Slug & routeEnhancers & eigene Extension

Erstellt am 20. Dezember 2020 · Noch keine Antworten

Tags: URLs & Routing, TYPO3 9, Frage

metan ·

HABE das Problem gelöst.
Die Variablen in den aspects waren falsch wiedergegeben.
Nichts des trotz, danke.

#####################################################

Hallo zusammen,

ich möchte realUrls für DB Einträge generieren. Hierzu habe ich die TCA der DB Einträge mit einem Feld 'pathsegment' erweitert.

        'pathsegment' => [
            'exclude' => true,
            'label' => 'LLL:EXT:m3pe/Resources/Private/Language/locallang_db.xlf:tx_m3pe_domain_model_talentprofile.pathsegment',
            'config' => [
                'type' => 'slug',
                'size' => 100,
                'generatorOptions' => [
                    'fields' => ['country', 'firstname', 'lastname'],
                    'fieldSeparator' => '-',
                    'prefixParentPageSlug' => false,
                    'replacements' => [
                        '/' => '-'
                    ],
                ],
                'fallbackCharacter' => '-',
                'eval' => 'unique',
                'default' => ''
            ]
        ],

Die Generierung und Speicherung des pathsegmentes funktionert sehr gut.

Was mir Probleme macht, ist die Generierung der dazugehörigen links.
in der site config.yaml steht im routeEnhancers folgendes drin

    TalentPortraitLinkNormal_Resolver:
        type: Plugin
        limitToPages: [12]
        routePath: '/{country_var}-{firstname_var}-{lastname_var}'
        namespace: 'tx_m3pe_m3pe'
        requirements:
            country_var: '^[a-z].*'
            firstname_var: '^[a-z0-9].*'
            lastname_var: '^[a-z0-9].*'
        _arguments:
            country_var: 'country'
            firstname_var: 'firstname'
            lastname_var: 'lastname'
            
    TalentPortraitLinkNormal_Generator:
        type: Extbase
        limitToPages: [12]
        extension: M3pe
        plugin: m3pe
        routes:
            -
                routePath: '{talentuid_var}'
                namespace: 'tx_m3pe_m3pe'
                _controller: 'TalentProfile::singleView'
                _arguments:
                    talentuid_var: talentuid
        defaultController: 'TalentProfile::singleView'
        aspects:
            feuserid_var:
                type: PersistedAliasMapper
                tableName: 'tx_m3pe_domain_model_talentprofile'
                routeFieldName: 'pathsegment'
                routeValuePrefix: '/'

Wird nun ein link generiert über

    $linkPara = array(PREFIX_Id . "[talentuid]" => intval($GLOBALS['TSFE']->fe_user->user['uid']));
    $linkPortraitView = $this->cObj->getTypoLink_URL(intval($settings['pid']['talentSingleView']), $linkPara);

wird ausschließlich die DB-Nummer des Eintrages rückgeliefert und nicht der Eintrag aus dem pathsegement-Feld.

Was übersehe ich hier.

Danke euch vielmals
Grüße
Metan