You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TYPO3 9 TCA中添加自定义向导?路由配置后字段配置方法

TYPO3 7 vs 9 自定义向导实现指南

嘿,我来帮你把已经配置好路由的自定义向导关联到TCA字段里!先快速区分下两个版本的核心差异,再重点讲TYPO3 9的实现步骤:

TYPO3 7 里的旧写法

在TYPO3 7中,不需要配置路由,直接在TCA的wizards数组里指定userFunc就能调用你的向导类:

// 示例:给tt_content的tx_csseo_meta_title字段加向导
$GLOBALS['TCA']['tt_content']['columns']['tx_csseo_meta_title']['config']['wizards'] = [
    'tx_csseo_preview' => [
        'type' => 'userFunc',
        'userFunc' => \Clickstorm\CsSeo\UserFunc\PreviewWizard::class . '::render',
        'title' => 'SEO预览',
        'icon' => 'EXT:cs_seo/Resources/Public/Icons/preview.svg',
    ],
    'tx_csseo_permalink' => [
        'type' => 'userFunc',
        'userFunc' => \Clickstorm\CsSeo\UserFunc\PermalinkWizard::class . '::render',
        'title' => '永久链接向导',
        'icon' => 'EXT:cs_seo/Resources/Public/Icons/permalink.svg',
    ]
];

TYPO3 9+ 基于路由的新实现(你的场景)

你已经在Configuration/Routes.php里配置好了Symfony路由,接下来只需要在目标字段的TCA配置里关联这些路由即可:

步骤1:找到你的TCA配置文件

比如你要给自定义表或者tt_content/pages的字段加向导,找到对应的TCA文件(通常在Configuration/TCA/Overrides/目录下,比如pages.php或tt_content.php)。

步骤2:添加Wizards配置到目标字段

在字段的config数组里加入wizards配置,使用route类型关联你定义的路由:

// 示例:给pages的tx_csseo_meta_title字段添加两个向导
$GLOBALS['TCA']['pages']['columns']['tx_csseo_meta_title']['config']['wizards'] = [
    'tx_csseo_preview' => [
        'type' => 'route',
        // 对应你Routes.php里的路由键名
        'route' => 'tx_csseo_preview',
        'title' => 'SEO预览',
        // 向导图标,替换成你扩展里的图标路径
        'icon' => 'EXT:cs_seo/Resources/Public/Icons/preview.svg',
        'module' => [
            'name' => 'wizard',
        ],
        // 传递给向导的参数,TYPO3会自动替换占位符
        'params' => [
            'uid' => '{record.uid}',
            'table' => '{record.table}'
        ]
    ],
    'tx_csseo_permalink' => [
        'type' => 'route',
        'route' => 'tx_csseo_permalink',
        'title' => '永久链接向导',
        'icon' => 'EXT:cs_seo/Resources/Public/Icons/permalink.svg',
        'module' => [
            'name' => 'wizard',
        ],
        'params' => [
            'uid' => '{record.uid}',
            'table' => '{record.table}'
        ]
    ]
];

关键配置说明

  • type: 'route':这是TYPO3 9+的新类型,告诉系统用你配置的Symfony路由来调用向导
  • route:必须和你Routes.php里定义的路由键名完全一致(比如tx_csseo_preview)
  • params:这里的{record.uid}和{record.table}是TYPO3的动态占位符,会自动替换为当前编辑记录的ID和表名,你的向导类可以通过$request->getQueryParams()获取这些参数
  • icon:记得用EXT路径指向你扩展里的图标文件,提升后台体验

最后一步:清除缓存

配置完成后,一定要清除TYPO3的全部缓存(包括配置缓存和路由缓存),否则新的配置不会生效!

内容的提问来源于stack exchange,提问作者mhirdes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:33:28