Я думаю, что комбинированное поле слизней было бы лучшим решением здесь.В своем коде TCA вы можете настроить слаг для создания из нескольких полей базы данных вместо одного:
'slug' => [
'exclude' => true,
'label' => 'LLL:EXT:...',
'config' => [
'type' => 'slug',
'fallbackCharacter' => '-',
'size' => 50,
'eval' => 'uniqueInSite',
'generatorOptions' => [
'fields' => ['country', 'city'],
'fieldSeparator' => '-',
'prependSlash' => true,
'prefixParentPageSlug' => true,
'replacements' => [
'/' => '',
],
]
],
],
Вместо uniqueInSite
вы также можете использовать uniqueInPid
(см. документы ).В конфиге yml маршрутизации просто прочитайте поле slug, затем наберите PersistedAliasMapper
и все готово.Я еще не тестировал использование /
в качестве поля-разделителя, но -
работает нормально.