如何在 TYPO3 CMS 9.5 LTS 中创建动态字符串路由增强器?
How to create a dynamic string route enhancer in TYPO3 CMS 9.5 LTS?
我为我的扩展路由增强器创建了一个简单的方面,如下所示:
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}'
问题是,如果有人的名字非常神秘,会破坏预期的 url 结构(例如,其中包含 &
或 /
)。为此,扩展 news
使用 path_segment
属性而不是多个字段。
为此,我用该属性扩展了 ext_tables.sql。但是我怎样才能强制 TCA 自动用“lastname
-prename
-uid
”的净化结构填充它?我不明白 news
扩展方式。
答案:不要!
在文档中以及根据几位开发人员的建议,您不应在 Persisted Pattern Mapper 中使用自由文本字段。相反,您在 TCA 中使用 slug
。
有关更多信息,请查看文档:https://docs.typo3.org/m/typo3/reference-tca/master/en-us/ColumnsConfig/Type/Slug.html
向模型的 TCA 添加如下内容:
'urlslug' => [
'exclude' => true,
'label' => 'urlslug',
'config' => [
'type' => 'slug',
'generatorOptions' => [
'fields' => ['lastname', 'prename', 'uid'],
'fieldSeparator' => '-',
'prefixParentPageSlug' => true
],
'fallbackCharacter' => '-',
'eval' => 'uniqueInSite',
'default' => ''
]
]
记得将 urlslug
添加到您的模型和扩展的 ext_tables.sql 中。此外,slugs 只会在 new 对象上生成,只能使用 TCA(后端)创建。
我为我的扩展路由增强器创建了一个简单的方面,如下所示:
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}'
问题是,如果有人的名字非常神秘,会破坏预期的 url 结构(例如,其中包含 &
或 /
)。为此,扩展 news
使用 path_segment
属性而不是多个字段。
为此,我用该属性扩展了 ext_tables.sql。但是我怎样才能强制 TCA 自动用“lastname
-prename
-uid
”的净化结构填充它?我不明白 news
扩展方式。
答案:不要!
在文档中以及根据几位开发人员的建议,您不应在 Persisted Pattern Mapper 中使用自由文本字段。相反,您在 TCA 中使用 slug
。
有关更多信息,请查看文档:https://docs.typo3.org/m/typo3/reference-tca/master/en-us/ColumnsConfig/Type/Slug.html
向模型的 TCA 添加如下内容:
'urlslug' => [
'exclude' => true,
'label' => 'urlslug',
'config' => [
'type' => 'slug',
'generatorOptions' => [
'fields' => ['lastname', 'prename', 'uid'],
'fieldSeparator' => '-',
'prefixParentPageSlug' => true
],
'fallbackCharacter' => '-',
'eval' => 'uniqueInSite',
'default' => ''
]
]
记得将 urlslug
添加到您的模型和扩展的 ext_tables.sql 中。此外,slugs 只会在 new 对象上生成,只能使用 TCA(后端)创建。