TYPO3 v11中TCA自定义renderType搭配type=none配置失效咨询
TYPO3 v11中type="none"字段触发DBAL异常的解决方案
升级TYPO3到v11版本后,原v10中正常运行的TCA配置(type="none"+自定义renderType)出现异常:DataHandler会尝试持久化该字段,导致Doctrine\DBAL\Exception\InvalidFieldNameException,提示未知列tx_awesomeicons_search,且在tt_content等其他表添加同类字段时问题一致。
问题原因
TYPO3 v11对type="none"字段的处理逻辑有调整:当字段配置了自定义renderType时,默认不再自动跳过持久化流程,需要显式声明禁止持久化。
解决步骤
- 添加持久化禁用配置
在字段的config数组中新增'persistence' => false,明确告知DataHandler不保存该字段的数据:
$GLOBALS['TCA']['pages']['columns']['tx_awesomeicons_search'] = [ 'exclude' => 1, 'label' => 'LLL:EXT:awesomeicons/Resources/Private/Language/Tca.xlf:awesomeicons.icon.search', 'config' => [ 'type' => 'none', 'renderType' => 'plusAwesomeicons', 'size' => 15, 'persistence' => false, // 显式禁止持久化 ], ];
- 检查自定义renderType实现
确认自定义plusAwesomeicons的渲染代码(如Fluid模板或PHP类)中,表单元素未设置与字段名一致的name属性——如果存在name="tx_awesomeicons_search",会导致DataHandler捕捉到提交值并尝试写入数据库,需移除或修改该属性。
内容的提问来源于stack exchange,提问作者Jürgen Pfusterschmied
相关产品推荐
相关产品推荐

