Я обновляю проект об учебных курсах, и мои URL-сегменты выглядят так:
/ категория / курс / местоположение. html
Запустил его со следующей конфигурацией:
routeEnhancers:
PageTypeSuffix:
type: PageType
default: '.html'
map:
'.html': 0
CoursePlugin:
type: Extbase
limitToPages:
- 1
- 15
- 17
- 18
extension: Course
plugin: Catlist
namespace: course_catlist
routes:
- routePath: '/{category_title}/{course_title}/{location_title}'
_controller: 'Category::list'
_arguments: {category_title: 'category', course_title: 'course', location_title: 'location'}
defaultController: 'Category::list'
aspects:
category_title:
type: PersistedAliasMapper
tableName: tx_course_domain_model_category
routeFieldName: 'slug'
course_title:
type: PersistedAliasMapper
tableName: tx_course_domain_model_course
routeFieldName: 'slug'
location_title:
type: StaticValueMapper
map:
alle-standorte: 0
hamburg: 1
berlin: 2
Проблема теперь в том, что она работает только при наличии значений для всех трех установленных параметров! Но, например, может существовать такой сегмент, как
/ языковые курсы / все курсы / берлин. html
Параметр курса пуст, поэтому все «языковые курсы» в «берлине» отображаются в виде списка.
В realurl можно комбинировать lookUpTable со значением ValueMap!
array(
'GETvar' => 'tx_course_catlist[course]',
'valueMap' => array(
'all-courses' => "",
),
'lookUpTable' => array(
'table' => 'tx_course_domain_model_course',
'id_field' => 'uid',
'alias_field' => 'title',
'addWhereClause' => ' AND deleted=0 ',
'useUniqueCache' => 1,
'useUniqueCache_conf' => array(
'strtolower' => 1,
'spaceCharacter' => '-',
),
),
)
Как я могу адаптировать это в TYPO3 9? Есть опыт или идеи? Как я могу сопоставить пустое значение для сегмента PersistedAliasMapper?