Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TYPO3 v9路由:如何使路由路径的一部分尊重另一部分的解析值?_Typo3_Typo3 9.x - Fatal编程技术网

TYPO3 v9路由:如何使路由路径的一部分尊重另一部分的解析值?

TYPO3 v9路由:如何使路由路径的一部分尊重另一部分的解析值?,typo3,typo3-9.x,Typo3,Typo3 9.x,我有一个extbase扩展,有两个模型,它们有1:n的关系,国家和城市。 URL应该是这样的。 城市名称在世界上并不是独一无二的,例如,在德国和美国有一个叫“莱比锡”的城市 所以我可以有两个网址 而解决“莱比锡”问题必须尊重国家利益 对于当前提供的增强剂/特性,这是否可行? 如果没有,您对如何处理此类案件有何建议 routeEnhancers: MyWebsitePi1: type: Extbase limitToPages: [1] extension: W

我有一个extbase扩展,有两个模型,它们有1:n的关系,国家和城市。 URL应该是这样的。 城市名称在世界上并不是独一无二的,例如,在德国和美国有一个叫“莱比锡”的城市

所以我可以有两个网址

而解决“莱比锡”问题必须尊重国家利益

对于当前提供的增强剂/特性,这是否可行? 如果没有,您对如何处理此类案件有何建议

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
建议,这我不知道。