Typo3 类型3.8.7.10:“;未知列';sys_file_reference.uid_local:type';在';其中第'条&引用;在具有文件类型属性的新扩展名中
大家好 在一个新的TYPO3 8.7.10站点中,我刚刚使用extension Builder创建了一个新的扩展。在该扩展中,有一个模型对象(“家具族”)具有文件类型属性(我称之为“符号”)。我的扩展还有一个插件,它显示所有家具族的列表。我用我的插件创建了一个家具族和一个新页面 扩展生成器中的新模型对象 问题是,我没有显示包含唯一记录的列表,而是出现以下错误: 哎呀,发生了一个错误!代码:20180219055419589a6076 借助fh_调试扩展,我可以获得有关错误的更多信息: 哎呀,发生了一个错误!代码:20180219055419589a6076未知列'sys_file_reference.uid_local:type'in'where子句'异常代码:1472074485文件:/typo3/sysext/extbase/Classes/Persistence/Generic/Storage/typo3dbackend.php行:393 fh_调试跟踪:文件:/typo3/sysext/extbase/Classes/Persistence/Generic/Backend.php“第226行函数:getObjectDataByQuery文件:/typo3/sysext/extbase/Classes/Persistence/Generic/PersistenceManager.php”第126行函数:getObjectDataByQuery文件:/typo3/sysext/extbase/Classes/Persistence/Generic/QueryResult.php”第113行函数:getObjectDataByQuery文件:/typo3/sysextbase/extbase/Classes/Persistence/Generic/Mapper/DataMapper.php“行:567函数:getFirst文件:/typo3/sysext/extbase/Classes/Persistence/Generic/Mapper/DataMapper.php”行:503函数:mapResultToPropertyValue文件:/typo3/sysext/extbase/Classes/Persistence/Generic/Mapper/DataMapper.php”行:290函数:mapObjectToClassProperty文件:/typo3/sysext/extbase/Classes/Persistence/Generic/Mapper/DataMapper.php“行:186函数:解冻属性文件:/typo3/sysext/extbase/Classes/Persistence/Generic/Mapper/DataMapper.php”行:144函数:mapSingleRow 奇怪的是,当我删除属性“symbol”时,会显示列表(仅显示属性“name”) 作为一个新安装,我尝试将我的数据库与SpecificIon进行比较,但并没有进行任何更改 我的问题是:我如何纠正这个错误Typo3 类型3.8.7.10:“;未知列';sys_file_reference.uid_local:type';在';其中第'条&引用;在具有文件类型属性的新扩展名中,typo3,typo3-8.x,typo3-extensions,extension-builder3,Typo3,Typo3 8.x,Typo3 Extensions,Extension Builder3,大家好 在一个新的TYPO3 8.7.10站点中,我刚刚使用extension Builder创建了一个新的扩展。在该扩展中,有一个模型对象(“家具族”)具有文件类型属性(我称之为“符号”)。我的扩展还有一个插件,它显示所有家具族的列表。我用我的插件创建了一个家具族和一个新页面 扩展生成器中的新模型对象 问题是,我没有显示包含唯一记录的列表,而是出现以下错误: 哎呀,发生了一个错误!代码:20180219055419589a6076 借助fh_调试扩展,我可以获得有关错误的更多信息: 哎呀,发
谢谢。这个问题已经很老了,但我在TYPO3版本9中仍然存在这个问题,并发现它与extension builder有关,extension builder正在为字段
uid\u local:type
错误消息只是阻塞了所有内容,因为没有为字段定义类型 在这个屏幕截图中,您可以看到在表
sys\u file\u reference
中定义了一个具有该名称的字段:
向下滚动带有表格字段的长列表,可以发现如下内容:
可以找到config.items
的定义,其中包含一些可选择项的典型定义。即使只有一个项目,该结构也是某种形式元素的典型选择。我可以想象表单元素,如选择下拉框、单选按钮或复选框。所有这些元素都有这种代码结构作为定义
因此,我删除错误消息所做的只是为字段定义一个“类型”:
$tmp_ttnews_vp_columns['uid_local:type']['config']['type'] = 'select';
另一方面,该字段通常不会显示,因为表sys\u file\u reference
从不遵循extbase逻辑,并且工作方式不同。
因此,删除文件中的一些代码非常简单和有用您的扩展名/配置/TCA/Overrides/sys\u file\u reference.php
该表中有一个包含新字段或更改字段定义的块,该列表上方或下方的大多数代码都可以删除 这在列定义之上,可以删除: 下面这样的块也可以删除所需代码: 有关
类型
字段的文档可以找到,在底部的章节中还介绍了组合表示法,只是不是使用uid\u local,而是使用file:文件:类型
有许多情况分别详细说明了它无法工作的原因,这里是已知的情况,我可以在以后的评论基础上扩展列表:
- extension builder创建的默认映射看起来如下所示:
recordType=Tx\u TtnewsVp\u FileReference
干扰并引发问题中所述的错误消息。这种类型的打字脚本通常位于扩展文件夹根目录下的文件
ext\u TypoScript\u setup.TypoScript
,因此即使不包含静态模板,也会始终加载它
- 类中的注释可能是错误的,包括诸如打字错误之类的简单错误。 注释和类型提示必须是正确的(也许缺少的注释比错误的注释要好,但我从未尝试过缺少注释或类型提示)
$tmp_ttnews_vp_columns['uid_local:type']['config']['type'] = 'select';
config.tx_extbase {
persistence {
classes {
WDB\TtnewsVp\Domain\Model\FileReference {
mapping {
tableName = sys_file_reference
recordType = Tx_TtnewsVp_FileReference
}
}
}
}
}