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。