我只是尝试使用新的TextField"版权"来扩展sys_file_reference表,只是正常的extbase方式。现场表现出像魅力一样的工作。但是,当我使用SYS_FILE_REFERY关系保存记录时,它不会添加参考。保存后只是空的...是否是带有常规媒体字段的页面,或者是我的自定义扩展之一。有人知道我缺少什么?
非常感谢您的任何帮助!
TCA:
$fileReferenceColumns = [
'copyright' => [
'exclude' => true,
'label' => $ll . 'sys_file_reference.copyright',
'config' => [
'type' => 'input',
'size' => 20,
'max' => 255,
'eval' => 'null',
'default' => null,
]
]];
TYPO3CMSCoreUtilityExtensionManagementUtility::addTCAcolumns('sys_file_reference', $fileReferenceColumns);
TYPO3CMSCoreUtilityExtensionManagementUtility::addFieldsToPalette(
'sys_file_reference',
'imageoverlayPalette',
'copyright'
);
sql:
CREATE TABLE sys_file_reference (
copyright VARCHAR(255) DEFAULT '' NOT NULL,
);
模型:
class FileReference extends AbstractEntity
{
/**
* uid of a sys_file
*
* @var integer
*/
protected $originalFileIdentifier;
/**
* @var TYPO3CMSExtbaseDomainModelFile
*/
protected $file;
/**
* @var string
*/
protected $copyright;
/**
* setOriginalResource
*
* @param TYPO3CMSCoreResourceFileReference $originalResource
* @return void
*/
public function setOriginalResource(TYPO3CMSCoreResourceFileReference $originalResource)
{
$this->originalResource = $originalResource;
$this->originalFileIdentifier = (int)$originalResource->getOriginalFile()->getUid();
}
/**
* @return TYPO3CMSExtbaseDomainModelFile
*/
public function getFile()
{
return $this->file;
}
/**
* @param TYPO3CMSExtbaseDomainModelFile $file
*/
public function setFile($file)
{
$this->file = $file;
$this->originalFileIdentifier = $file->getUid();
}
/**
* @return string
*/
public function getCopyright()
{
return $this->copyright;
}
/**
* @param string $copyright
*/
public function setCopyright($copyright)
{
$this->copyright = $copyright;
}
}
typoscript:
config.tx_extbase {
persistence {
classes {
InterlutionsItlGalleryDomainModelFileReference {
mapping {
tableName = sys_file_reference
columns {
uid_local.mapOnProperty = originalFileIdentifier
uid_local.mapOnProperty = file
votes.mapOnProperty = votes
}
}
}
}
objects {
TYPO3CMSExtbaseDomainModelFileReference.className = InterlutionsItlGalleryDomainModelFileReference
}
}
}
问题是,如果未填写新字段"版权",则试图将值保存为null。但是SQL定义不允许NULL。
因此,将SQL定义更改为例如以下工作(查看sys_file_reference标题和描述的字段定义(:
CREATE TABLE sys_file_reference (
copyright TINYTEXT,
);
我知道这真的很简单...
嘿,欢迎来到stackoverflow :-)我想您的所有参考都会丢失,因为您完全"替换"了原始的fileReference对象:
config.tx_extbase.objects.TYPO3CMSExtbaseDomainModelFileReference.className = InterlutionsItlGalleryDomainModelFileReference
在您的整个系统中,extbase fialerference将被您的归档替换。因此,我认为有关每项归档的重要信息不会存储到DB,因为您的"覆盖" - 模型缺少大量的setter/getters,因为您的模型仅扩展了抽象。
请尝试扩展现有的归档 - 这可能会解决问题:
class FileReference extends TYPO3CMSExtbaseDomainModelFileReference
请注意,使用config.tx_extbase.objects
的覆盖类可能会导致其他扩展名破坏。您可以考虑使用plugin.tx_yourextension.objects
覆盖它以进行扩展。无论如何,您的新字段都可以使用file.properties.popyright在流体模板中访问默认情况下。
另一件事是:由于您需要版权字段,因此该扩展名也相同:https://typo3.org/extensions/repository/view/tgm_copyright