TYPO3 v9路由:如何使路由路径的一部分尊重另一部分的解析值?
我有一个extbase扩展,有两个模型,它们有1:n的关系,国家和城市。 URL应该是这样的。 城市名称在世界上并不是独一无二的,例如,在德国和美国有一个叫“莱比锡”的城市 所以我可以有两个网址TYPO3 v9路由:如何使路由路径的一部分尊重另一部分的解析值?,typo3,typo3-9.x,Typo3,Typo3 9.x,我有一个extbase扩展,有两个模型,它们有1:n的关系,国家和城市。 URL应该是这样的。 城市名称在世界上并不是独一无二的,例如,在德国和美国有一个叫“莱比锡”的城市 所以我可以有两个网址 而解决“莱比锡”问题必须尊重国家利益 对于当前提供的增强剂/特性,这是否可行? 如果没有,您对如何处理此类案件有何建议 routeEnhancers: MyWebsitePi1: type: Extbase limitToPages: [1] extension: W
routeEnhancers:
MyWebsitePi1:
type: Extbase
limitToPages: [1]
extension: Website
plugin: Pi1
routes:
- routePath: '/{country_slug}/{city_slug}'
_controller: 'City::show'
_arguments:
country_slug: 'country'
city_slug: 'city'
defaultController: 'City::list'
aspects:
country_slug:
type: PersistedAliasMapper
tableName: 'tx_mywebsite_domain_model_country'
routeFieldName: 'slug'
city_slug:
type: PersistedAliasMapper
tableName: 'tx_mywebsite_domain_model_city'
routeFieldName: 'slug'
我认为组合段塞流场是最好的解决方案。在TCA代码中,您可以将slug配置为从多个db字段而不是仅从一个db字段创建:
“slug”=>[
“排除”=>true,
'label'=>'LLL:EXT:…',
“配置”=>[
'type'=>'slug',
'后备字符'=>'-',
“大小”=>50,
“eval”=>“uniqueInSite”,
“发电机选项”=>[
“字段”=>[“国家”,“城市”],
“字段分隔符”=>“-”,
“prependSlash”=>真,
“prefixParentPageSlug”=>true,
“替换”=>[
'/' => '',
],
]
],
],
您也可以使用uniqueInPid
,而不是uniqueInSite
(请参阅)。
在路由yml配置中,只需读取slug字段,然后使用
PersistedAliasMapper
即可。我还没有测试过使用/
作为分隔符字段,但是-
工作正常。谢谢您的建议。但不幸的是,我需要在我真正的项目中,搜索引擎优化恒定的网址斜杠,所以。。。另外,我真正的问题有点复杂,在两个参数(不同的报价类型)之间有一个静态映射。但是我喜欢你的uniqueInPid
建议,这我不知道。