TYPO3 v10 routeEnhancer 生成 slug 但无法解决

问题描述

在使用 slug 时,我自己的扩展中有一个奇怪的行为。

我的 TCA 中的 slug 生成器如下所示:

        'slug' => [
        'label' => 'Slug','exclude' => 1,'config' => [
            'type' => 'slug','generatorOptions' => [
                'fields' => ['title'],'fieldSeparator' => '/','prefixParentPageSlug' => true,'replacements' => [
                    '/' => '',],'fallbackCharacter' => '-','eval' => 'uniqueInSite','default' => ''
        ],

它正确地生成了slug。 它也按预期保存在数据库中。

routeEnhancer 看起来像这样:

ReferenceDetail:
 type: Extbase
 limitToPages:
  - 82
 extension: reference
 plugin: referencedetail
 routes:
  - routePath: '/{ref}'
    _controller: 'Reference::show'
    _arguments:
      ref: reference
 aspects:
  ref:
    type: PersistedaliasMapper
    tableName: tx_reference_domain_model_reference
    routeFieldName: slug

在我的前端,一切看起来都很好。链接看起来像: https://xyz.info/reference/detail/name-reference/

但是当点击它时,我最终得到了 404。 当我从 routeFieldName: slug 切换到 routeFieldName: namerouteFieldName: uid 时,它工作得很好吗?有谁知道我的鼻涕虫可能出了什么问题?

解决方法

想通了。

此问题与:https://forge.typo3.org/issues/91397

我存储的对象在我的 pageRoot 之外,因为我有一个多域站点。 因此,您必须在 TCA Slug 配置中设置 'eval' => 'unique' 而不是 'eval' => 'uniqueInSite'