TYPO3 - tx_news Speaking URL route if storage out of root page lead to error "The requested page does not exist"

TYPO3 - tx_news Speaking URL route if storage out of root page lead to error "The requested page does not exist"

已有具有页面树的网站

根网站 1

根网站 2

当我尝试在“News List/Detail 2”实体表单“News Storage 1”上显示其列表视图的工作时。但在详细视图中,我有错误“The requested page does not exist” 而相反。

如果将 Storage 文件夹放在同一级别的根页面中 - 不起作用。 此外,如果从站点配置中删除 routeEnhancers - 一切正常。很简单:

  News:
    type: Extbase
    extension: News
    plugin: Pi1
    routes:
      -
        routePath: '/{news-title}'
        _controller: 'News::detail'
        _arguments:
          news-title: news

    defaultController: 'News::list'
    aspects:
      news-title:
        type: PersistedAliasMapper
        tableName: tx_news_domain_model_news
        routeFieldName: path_segment

URL 路由似乎有问题。但是怎么解决呢?

我用的是TYPO3 9.5.22, tx_news 7.3.1.

问题。如何允许从其他根页面详细查看实体并使用 URL 路由?感谢您的建议:)

更新:Extbase 等其他路由也有同样的问题。如果从路由配置中跳过 SLUG,一切正常)。比如,使用 title 而不是 slug。应该是 slug 前缀或后缀逻辑的问题。

如此配置

News:
    type: Extbase
    extension: News
    plugin: Pi1
    routes:
      -
        routePath: '/{news-title}'
        _controller: 'News::detail'
        _arguments:
          news-title: news

    defaultController: 'News::list'
    aspects:
      news-title:
        type: PersistedAliasMapper
        tableName: tx_news_domain_model_news
        routeFieldName: uid

可行,但 URL 不是最好看的(。为什么 slug 是越野车?

我在这里 找到了其他案例的答案。我很确定这种情况会出现在其他开发者面前。

slug配置问题:

原始配置

$GLOBALS['TCA']['tx_news_domain_model_news']['columns']['path_segment']['config'] = [
    'type' => 'slug',
    'size' => 50,
    'generatorOptions' => [
        'fields' => ['title'],
        'replacements' => [
            '/' => '-'
        ],
    ],
    'fallbackCharacter' => '-',
    'eval' => 'uniqueInSite',
    'default' => ''
];

选项eval' => 'uniqueInSite'如果你需要在跨网站上使用Entitties不工作,所以你需要替换为eval' => 'unique'

一切正常。我的情况也需要在路由配置中添加 routeValuePrefix: '',如

aspects:
  fund_slug:
    type: PersistedAliasMapper
    tableName: tx_lloyd_domain_model_fund
    routeFieldName: slug
    routeValuePrefix: ''

但是对于 tx_news 第一次修复有效