通常のextbaseの方法で、sys_file_referenceテーブルを新しいテキストフィールド「著作権」で拡張しようとしています。魔法のように働き、フィールドが現れます。しかし、sys_file_reference リレーションでレコードを保存すると、参照が追加されません。保存後は空です... レコードが通常のメディア フィールドを含むページであるか、カスタム拡張機能の 1 つであるかは問題ではありません。誰かが私が欠けているものを知っていますか?
助けてくれてありがとう!
TCA:
$fileReferenceColumns = [
'copyright' => [
'exclude' => true,
'label' => $ll . 'sys_file_reference.copyright',
'config' => [
'type' => 'input',
'size' => 20,
'max' => 255,
'eval' => 'null',
'default' => null,
]
]];
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('sys_file_reference', $fileReferenceColumns);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::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 \TYPO3\CMS\Extbase\Domain\Model\File
*/
protected $file;
/**
* @var string
*/
protected $copyright;
/**
* setOriginalResource
*
* @param \TYPO3\CMS\Core\Resource\FileReference $originalResource
* @return void
*/
public function setOriginalResource(\TYPO3\CMS\Core\Resource\FileReference $originalResource)
{
$this->originalResource = $originalResource;
$this->originalFileIdentifier = (int)$originalResource->getOriginalFile()->getUid();
}
/**
* @return \TYPO3\CMS\Extbase\Domain\Model\File
*/
public function getFile()
{
return $this->file;
}
/**
* @param \TYPO3\CMS\Extbase\Domain\Model\File $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;
}
}
タイポスクリプト:
config.tx_extbase {
persistence {
classes {
Interlutions\ItlGallery\Domain\Model\FileReference {
mapping {
tableName = sys_file_reference
columns {
uid_local.mapOnProperty = originalFileIdentifier
uid_local.mapOnProperty = file
votes.mapOnProperty = votes
}
}
}
}
objects {
TYPO3\CMS\Extbase\Domain\Model\FileReference.className = Interlutions\ItlGallery\Domain\Model\FileReference
}
}
}