routes - 如何在 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。lastname
但是我怎样才能强制 TCA 用“ - prename
- ”的净化结构自动填充它uid
?我不明白news
扩展方式。
解决方案
答:不要!
在文档中并根据多个开发人员的建议,您不应在持久模式映射器中使用自由文本字段。相反,您slug
在 TCA 中使用 a 。
有关更多信息,请查看文档: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 只会在新对象上生成,仅使用 TCA(后端)创建。
推荐阅读
- c++ - 如何将位图文件切成相等的部分并将每个部分保存在一个新的位图文件中?
- kotlin - 天气休息 api 的 URL 操作
- visual-studio-code - 节点调试 - 断点显示在只读文件中
- java - jar 文件是否不包含导入的包和类?
- html - 动画不会在半秒帧立即结束
- php - 在 Codeigniter 4 中添加 mysqli 选项
- docker - WSL2 上的 Docker 卷
- java - 在java中将int数组转换为不带逗号的字符串
- machine-learning - 'DataFrame' 对象没有属性 'convert_objects'
- python - 如果我启动程序就会退出,你能帮我吗?