Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
Routes 如何在TYPO3 CMS 9.5 LTS中创建动态字符串路由增强器?_Routes_Extbase_Typo3 9.x_Typo3 Tca - Fatal编程技术网

Routes 如何在TYPO3 CMS 9.5 LTS中创建动态字符串路由增强器?

Routes 如何在TYPO3 CMS 9.5 LTS中创建动态字符串路由增强器?,routes,extbase,typo3-9.x,typo3-tca,Routes,Extbase,Typo3 9.x,Typo3 Tca,我为我的扩展路径增强器创建了一个简单的方面,如下所示: routeEnhancers: Trainee: type: Extbase extension: Dsinstitution plugin: Dslisttrainees routes: - routePath: '/trainee/{trainee-identifier}' _controller: 'Trainee::show' _arguments:

我为我的扩展路径增强器创建了一个简单的方面,如下所示:

routeEnhancers:
  Trainee:
    type: Extbase
    extension: Dsinstitution
    plugin: Dslisttrainees
    routes:
      - routePath: '/trainee/{trainee-identifier}'
        _controller: 'Trainee::show'
        _arguments:
          trainee-identifier: trainee
    defaultController: 'Trainee::list'
    aspects:
      trainee-identifier:
        type: PersistedPatternMapper
        tableName: 'tx_dsinstitution_domain_model_trainee'
        routeFieldPattern: '^(?<lastname>.+)-(?<prename>.+)-(?<uid>\d+)$'
        routeFieldResult: '{lastname}-{prename}-{uid}'
routeEnhancers:
练习生:
类型:Extbase
分机:DSI
插件:DSLIST
路线:
-路径路径:'/trainee/{trainee identifier}'
_控制员:“学员::表演”
_论据:
学员标识符:学员
defaultController:“实习生::列表”
方面:
学员识别码:
类型:PersistedPatternMapper
表名:'tx\U dsinstitution\U domain\U model\U培训生'
routeFieldPattern:“^(?。+)-(?。+)-(?\d+)$”
routeFieldResult:“{lastname}-{prename}-{uid}”
问题是,如果有人的名字非常神秘,这会破坏预期的url结构(例如,其中包含
&
/
)。为此,扩展名
news
使用
path\u段
属性,而不是多个字段

为此,我使用该属性扩展了ext_tables.sql。但是,我如何强制TCA自动使用经过消毒的结构“
lastname
-
prename
-
-
uid
”?我不明白新闻的扩展方式。

回答:不要

在文档中,根据几个开发人员的建议,您不应该在持久化模式映射器中使用自由文本字段。相反,您可以在TCA中使用
slug

有关更多信息,请参阅文档:

向模型的TCA中添加如下内容:

'urlslug' => [
    'exclude' => true,
    'label' => 'urlslug',
    'config' => [
        'type' => 'slug',
        'generatorOptions' => [
            'fields' => ['lastname', 'prename', 'uid'],
            'fieldSeparator' => '-',
            'prefixParentPageSlug' => true
        ],
        'fallbackCharacter' => '-',
        'eval' => 'uniqueInSite',
        'default' => ''
    ]
]

请记住将
urlslag
添加到您的模型和扩展的ext_tables.sql中。另外,slug将仅在新的对象上生成,仅使用TCA(后端)创建。

附加:如果删除
'exclude'=>true
,则可以在后端重建slug。