TYPO3 11.5 Fluid无法读取tx_anreisetag_item表子记录如何解决
TYPO3 11.5 自定义内容元素无法读取Anreisetag子记录修复
问题场景
在TYPO3 11.5.9中创建包含双标签页的自定义内容元素,使用Fluid编写模板时无法正常读取子条目数据:
- 涉及数据表:
tt_content(主内容表)、tx_anreisetag_item(Anreisetag标签页子条目存储表)、tx_abreisetag_item(Abreisetag标签页子条目存储表) - 后端编辑界面:

- 实际录入数据:Anreisetag标签页下3条记录,Abreisetag标签页下2条记录
- 异常表现:前端debug仅能获取Abreisetag的2条记录,Anreisetag记录完全缺失

核心原因
两个DatabaseQueryProcessor未配置as参数指定独立变量名,导致查询结果被覆盖:DatabaseQueryProcessor未手动设置as时,默认将查询结果写入模板变量records。配置中20号位的Anreisetag查询先执行,结果存入records后,被后执行的30号位Abreisetag查询结果直接覆盖,最终模板中仅能获取Abreisetag的记录。
修复方案
给两个数据库查询处理器分别配置独立的as参数,避免变量冲突,修正后的完整TypoScript配置如下:
tt_content.klassenfahrt_anundabreisetag > tt_content.klassenfahrt_anundabreisetag =< lib.contentElement tt_content.klassenfahrt_anundabreisetag { templateName = AnundAbreisetag dataProcessing { 20 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor 20 { table = tx_anreisetag_item pidInList.field = pid where { data = field:uid intval = 1 wrap = tt_content=| } orderBy = sorting as = anreiseRecords } 30 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor 30 { table = tx_abreisetag_item pidInList.field = pid where { data = field:uid intval = 1 wrap = tt_content=| } orderBy = sorting as = abreiseRecords } 40 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor 40 { references.fieldName = tx_anreisetag_image as = imageAnreise } 50 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor 50 { references.fieldName = tx_abreisetag_image as = imageAbreise } } }
校验项
如果配置后仍无法读取数据,逐一检查以下配置:
- 确认
tx_anreisetag_item表TCA中,关联tt_content的外键字段名确实为tt_content,与where条件匹配 - 确认Anreisetag标签页下添加的3条记录未设置隐藏、起止访问时间限制,数据库中这3条记录的
tt_content字段值对应当前内容元素的uid - 配置更新后清除TYPO3系统缓存再进行调试
Fluid调用方式
模板中直接遍历对应的变量即可输出数据:
<!-- Anreisetag记录遍历 --> <f:for each="{anreiseRecords}" as="item"> <!-- 输出字段内容,关联图片调用imageAnreise变量 --> </f:for> <!-- Abreisetag记录遍历 --> <f:for each="{abreiseRecords}" as="item"> <!-- 输出字段内容,关联图片调用imageAbreise变量 --> </f:for>
内容的提问来源于stack exchange,提问作者Mi Neu
相关产品推荐
相关产品推荐

