大家!
在新的TYPO3 8.7.10网站中,我刚刚使用Extension Builder创建了一个新扩展。在该扩展中,有一个模型对象(" FurnitureFamily")具有文件类型属性(我称之为"符号")。我的扩展程序还有一个插件,显示所有家具系列的列表。我用我的插件创建了一个家具系列和一个新页面。
Extension Builder中的新模型对象
/**
* name
*
* @var string
* @validate NotEmpty
*/
protected $name = '';
/**
* symbol
*
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
* @cascade remove
*/
protected $symbol = null;
问题是,我没有显示包含我唯一记录的列表,而是出现以下错误:
糟糕,发生错误!代码:20180219055419589a6076
借助 fh_debug 扩展程序,我可以获得有关错误的更多信息:
糟糕,发生错误!代码:20180219055419589a6076未知栏' sys_file_reference.uid_local:键入'在' where子句'异常代码:1472074485文件:/typo3/sysext/extbase/Classes/Persistence/Generic/Storage/Typo3DbBackend.php行:393 fh_debug trace:file:/typo3/sysext/extbase/Classes/Persistence/Generic/Backend.php" ; line:226 function:getObjectDataByQuery file:/typo3/sysext/extbase/Classes/Persistence/Generic/PersistenceManager.php" line:126 function:getObjectDataByQuery file:/typo3/sysext/extbase/Classes/Persistence/Generic/QueryResult.php" line:113 function:getObjectDataByQuery file:/typo3/sysext/extbase/Classes/Persistence/Generic/Mapper/DataMapper.php" line:567函数:getFirst文件:/typo3/sysext/extbase/Classes/Persistence/Generic/Mapper/DataMapper.php" line:503 function:mapResultToPropertyValue file:/typo3/sysext/extbase/Classes/Persistence/Generic/Mapper/DataMapper.php" line:290 function:mapObjectToClassProperty file:/typo3/sysext/extbase/Classes/Persistence/Generic/Mapper/DataMapper.php" line:186函数:thawProperties文件:/typo3/sysext/extbase/Classes/Persistence/Generic/Mapper/DataMapper.php" line:144 function:mapSingleRow
奇怪的是,当我删除属性"符号"时,显示列表(仅显示属性" name")。
作为一个新安装,我尝试将我的数据库与特定的数据进行比较,但没有任何更改。
我的问题是:如何纠正错误?
谢谢。
答案 0 :(得分:0)
这个问题已经很老了,但是我在TYPO3版本9中仍然遇到这个问题,发现它与extension-builder有关,后者正在为字段uid_local:type
创建一些条目。
错误消息只是阻塞了所有内容,因为该字段没有定义类型。
在此屏幕快照中,您可以看到在表sys_file_reference
中定义了具有该名称的字段:
可以找到config.items
的定义,其中包含一些可以选择的典型定义。即使只有一项,结构对于某种形式的元素选择也是很典型的。我可以想象表单元素,例如选择下拉框,单选按钮或复选框。所有这些元素都具有这种代码结构作为定义。
所以我删除错误消息的方法是为字段定义一个“类型”:
$tmp_ttnews_vp_columns['uid_local:type']['config']['type'] = 'select';
另一方面,该字段通常不会显示,因为表sys_file_reference
从不遵循extbase-logic,并且工作方式不同。
因此,删除文件中的一些代码非常容易且有用。
your_extension/Configuration/TCA/Overrides/sys_file_reference.php
该表中有一个块,其中包含有关新字段或更改字段的定义,可以删除该列表上方或下方的大多数代码。
有关type
字段的文档可以在here中找到,在底部的一章中还介绍了有关组合符号的说明,只是不使用uid_local而是使用文件file:type
。
有许多情况分别详细说明了为什么它不起作用,在已知情况下,我可以稍后根据评论扩展列表:
config.tx_extbase {
persistence {
classes {
WDB\TtnewsVp\Domain\Model\FileReference {
mapping {
tableName = sys_file_reference
recordType = Tx_TtnewsVp_FileReference
}
}
}
}
}
在这里,recordType = Tx_TtnewsVp_FileReference
行正在干扰和引发问题中所述的错误消息。
这种TypoScript通常位于扩展文件夹根目录下的ext_typoscript_setup.typoscript
文件中,因此即使不包含静态模板,也总是将其加载。