Project

General

Profile

Actions

Bug #87333

closed

Slug fieldSeparator default value collides with symfony strict requirements

Added by Guido Schmechel over 5 years ago. Updated about 4 years ago.

Status:
Closed
Priority:
Should have
Assignee:
-
Category:
Link Handling, Site Handling & Routing
Target version:
-
Start date:
2019-01-05
Due date:
% Done:

100%

Estimated time:
TYPO3 Version:
9
PHP Version:
Tags:
Complexity:
Is Regression:
Sprint Focus:

Description

Context

I combine two fields via TCA Slug ['city', 'street']. TYPO3 builds the slug correctly to e.g. "cologne/streetname". This is also displayed in the backend in the slug field.

        'slug' => [
            'exclude' => true,
            'label' => 'URL Segment',
            'config' => [
                'type' => 'slug',
                'generatorOptions' => [
                    'fields' => ['city', 'street'],
                    'replacements' => [
                        '/' => '',
                        '&' => ''
                    ],
                ],
                'fallbackCharacter' => '-',
                'eval' => 'uniqueInPid',
            ],
        ],

Problem

If i call a list action which call this slug via f:link.page I get this error message:

Parameter "tx_ayacoopoi_poi__poi" for route "tx_ayacoopoi_poi_0" must match "[^/]++" ("cologne/streetname" given) to generate a corresponding URL.

I have not defined a field separator in the TCA config and so a slash is used by the code => https://github.com/TYPO3/TYPO3.CMS/blob/master/typo3/sysext/core/Classes/DataHandling/SlugHelper.php#L185

Symfony routing is in strict mode and so the slash isn't allowed.

Route Enhancer

routeEnhancers:
  DetailPoi:
    type: Extbase
    extension: AyacooPoi
    plugin: Poi
    routes:
      - { routePath: '{slug}', _controller: 'Poi::detail', _arguments: {'slug' : 'poi'} }
    defaultController: 'Poi::detail'
    aspects:
      slug:
        type: PersistedAliasMapper
        tableName: 'tx_ayacoopoi_domain_model_poi'
        routeFieldName: 'slug'
        routeValuePrefix: '/'

Related issues 3 (1 open2 closed)

Related to TYPO3 Core - Bug #88291: Exception thrown if slash in route field of PersistedPatternMapper aspectClosed2019-05-07

Actions
Related to TYPO3 Core - Bug #89263: TCEMAIN.preview doesn't work for routed controller with empty argumentsNew2019-09-25

Actions
Related to TYPO3 Core - Bug #90531: Requirements are not considered when an aspect is presentClosed2020-02-25

Actions
Actions

Also available in: Atom PDF